2012-06-05 27 views
2

我的項目有以下情形:無法設置NavigationController的出口值TopViewController在PreapreForSegue

[預覽視圖控制器] - (木代爾) - >導航控制器 - (上) - > [圖片設置視圖控制器]

在[預覽視圖控制器]中,我有一個按鈕,將執行模式segue(標識=「PreviewToSetting」),我在我的[預覽視圖控制器] .m文件中定義prepareForSegue方法:

- (void)prepareForSegue:(UIStoryboardSegue *) segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"PreviewToSetting"]) { 
     UINavigationController *unc=segue.destinationViewController; 
     PhotoSettingViewController *psvc=(PhotoSettingViewController *) unc.topViewController; 
     [email protected]"TEST"; 
    } 
} 

我設置了斷點是程序,並確實看到上面的塊運行沒有錯誤。 Segue確實執行並引導我進入「照片設置」場景,但是lblAudio的文本未被設置爲「測試」,因爲我認爲它應該是,任何人都知道爲什麼?

一些更多的信息:

  • lblAudio是在靜態表格單元中PhotoSettingViewController(的UITableViewController子類)的的UILabel出口性的表部分
  • lblAudio內sycthesized並定義爲

    @財產(強,非原子)IBOutlet UILabel * lblAudio;

  • lblAudio IBOutlet正確綁定,如果我重新定義了viewWillAppear方法中的文本屬性,如self.lblAudio.text = @「TEST」,標籤文本將正確更改爲「TEST」。

回答

0

由於物業是在IBOutlet中的賽格瑞它沒有初始化的時間。所以儘量做類似

創建像NSString *labelText標籤的文字中的一個屬性,並指定值@"TEST"到財產和viewWillAppear:方法將其分配給標籤將做你的工作

+0

謝謝!它像一個魅力!注意到Outlet在賽前準備時尚未初始化。 – user1416492

+0

謝謝,雖然'viewWillAppear'可能爲時已晚。 'viewDidLoad:'已經初始化了'topViewController'。 – bithavoc

+0

感謝您的建議。我會在我的更多項目中堅決執行它:) –