2014-04-03 16 views
1

我的問題
調用的方法不執行我有一個標準UIViewController。通過按下按鈕,它會加載一個表單模式視圖控制器。在主ViewController我設置一個標籤的文本一些代碼在從另一個視圖控制器

ViewController *main = [[ViewController alloc] initWithNibName:nil bundle:nil]; 
[main updateLabel]; 

在該方法中-(void)updateLabel,但標籤不會改變:當用UIBarButtonItem的新聞駁回這一模式的看法我做調用方法。但我知道函數被調用,因爲如果我做了NSLog(@"Method call test);而不是label.text = @"Test",我可以在控制檯中看到消息。

我在做什麼錯?它必須是我在主要ViewController中調用方法的方式,因爲我可以在其他任何地方輕鬆更改標籤。

我想要做什麼:
當解僱模態視圖控制器,我希望被稱爲在主視圖控制器的方法,在這種情況下更改標籤的文本。

感謝您的幫助!

回答

1

您正在使用該代碼創建ViewController的新實例,而不是獲取已有的指針。

如果視圖控制器是提出了模態視圖控制器,那麼你就可以得到一個指向它,

ViewController *main = self.presentingViewController; 
+0

這給出了一個警告:不兼容的指針類型用「UIViewController *」類型的表達式初始化「ViewController *」 – ifraaank

+0

它雖然工作,但我想擺脫這種警告。 :) – ifraaank

+1

@ifraaank,只需添加一個演員,(ViewController *)self.presentingViewController – rdelmar

0

一個更好的辦法來做到這一點是使用委託模式。

https://developer.apple.com/library/ios/documentation/general/conceptual/DevPedia-CocoaCore/Delegation.html

下面是一個設計模式建議

模態視圖控制器不應該知道如何辭退本身,即呈現視圖控制器的責任。畢竟,它可能已經以多種不同的方式呈現(模態,彈出,推送導航)。使用委託模式,模式視圖控制器會告訴它的委託,當條形按鈕項被按下時,它應該被解除。代表,即呈現視圖控制器,然後將解除模態視圖並更新您的問題中提到的標籤。

相關問題