2016-04-02 6 views
0

これを理解しようとした過去の日を費やして、解決策はおそらく単純ですが、私はそれを理解できません。基本的に私はWebViewの現在のURLを別のクラスのNSTextFieldに送信しようとしています。 WebViewのURLをMyViewControllerの文字列に送信すると正常に機能し、渡されていることがわかります。しかし、この文字列を私のTextField.StringValueに割り当てると、(null)が返されます。別のクラス(Obj C)のNSTextFieldに文字列を送信するココア

+0

別のビューコントローラから変数を渡すことは容易ではありません。シンプルなソリューションは、シングルトンを使用して変数を送信し、別のシングルトンに渡すことです。 –

答えて

0

代理人を使用して問題を解決しようと数日を過ごした後、私はあきらめてNSNotificationCenterに移動しました。おそらく最も効率的な方法ではありませんが、それは治療を働かせ、仕事を完璧にやります。

私はFirstWebControllerクラスからMyViewControllerクラスに現在のURLを送り、NSNotificationCenterを使用してオブジェクトを現在のURLに設定しました。 MyViewControllerクラスに入ったら、通知メソッドを呼び出してオブジェクトに自分のテキストフィールドを割り当てました。

Here's a good example

0

View Controller間の関係に問題があるようです。 2つのことはどのように関係していると思われますか?

は、あなたのコード内でこの点を考えてみます。ここでは

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame{ 
    // Getting url from WebView 
    NSString *newURL = [[[[frame dataSource] request] URL] absoluteString]; 
    MyViewController *vc = [[MyViewController alloc] init]; 
    [vc UrlSet:newURL]; 
} 

あなたはMyViewControllerのブランドの新しいインスタンスを作成し、その後、あなたはそれをURLを渡していますが、そのブランドの新しいインスタンスを使用して何かをすることはありません。ルーチンが終了すると単に削除されます。 MyViewControllerの既存のインスタンスを見つけてそのインスタンスにURLについて伝えたいのですか?それははるかに合理的なようです。

+0

View Controller間の関係を考慮していないため、メソッドの仕組みを再考する必要があると考えてください。現在、私はMyViewController - > tabHandler - > FirstWebControllerを持っています。ここで、tabHandlerはMyViewControllerのコンテナビューにあります。明日別に行こうと思って、それを並べ替えることができるかどうか確認してください – JonnyRoberts95

関連する問題