2016-04-02 38 views
0

花了一天的時間試圖弄清楚這個問題,解決方案可能很簡單,但我無法弄清楚。基本上我試圖將我的WebView的當前網址發送到另一個班級的NSTextField。將WebView URL發送到MyViewController中的字符串可以正常工作,所以我知道它正在通過。但是,當我將此字符串分配給我的TextField.StringValue時,它將返回(空)。Cocoa將字符串發送到另一個類的NSTextField中(Obj C)

+0

將變量從一個視圖控制器傳遞到另一個視圖控制器並不容易。一個簡單的解決方案是使用一個單例,以便發送一個變量給它,然後讓它傳遞給另一個。 –

回答

0

因此,花了幾天的時間試圖解決使用委託問題,我放棄了,並轉移到NSNotificationCenter。它可能不是最有效的方法,但它工作的一種享受和完美的工作。

我只是從我的FirstWebController類發送當前URL到我的MyViewController類,使用NSNotificationCenter並將對象設置爲我當前的URL。一旦進入MyViewController類,我就調用通知方法並將我的文本字段分配給對象。

Here's a good example

0

它看起來像你的視圖控制器之間的關係有問題。這兩件事情應該如何相關?

在代碼中考慮到這一點:

- (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一個全新的實例,然後傳遞給它一個網址,但你永遠不會做與該品牌新實例什麼。例程完成後,它就會被刪除。你的意思是找到一個已經存在的MyViewController實例並告訴該實例有關該URL?這似乎更合理。

+0

認爲我需要重新思考我的方法是如何工作的,因爲我沒有考慮到視圖控制器之間的關係。目前我有MyViewController - > tabHandler - > FirstWebController,其中tabHandler位於MyViewController的容器視圖中。明天再去一趟,看看我能不能把它整理一下 – JonnyRoberts95

相關問題