2011-04-11 44 views
0

我有一個UINavigationController,我用它將UIViewControllers推到使用pushViewController:animated:。在此之後,我在該傳入視圖上調用一個方法來設置其一些IB插座。不幸的是,當我爲視圖添加動畫時,這些只會被設置。當我推動一個UIViewController沒有動畫時,無法設置插座

那麼這將工作:

MyViewController *newView = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 
[self.navigationController pushViewController:newView animated:YES]; 
[newView updateOutletsForObject:myObject]; 

但這不會:

MyViewController *newView = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; 
[self.navigationController pushViewController:newView animated:NO]; 
[newView updateOutletsForObject:myObject]; 

有誰知道爲什麼會發生?提前致謝。

回答

0

在我看來,父視圖控制器不應該設置孩子的網點。您應該處理子視圖控制器的-viewDidLoad中的IBOutlet連接。

+0

嗨馬克。更新'-viewDidLoad'中的出口確實可行,但在我嘗試運行'-updateOutletsForObject:'方法之前,不會調用-viewDidLoad? – Ricky 2011-04-12 03:45:42

+0

是的,但那不是重點。封裝是關鍵。這樣做會使每個控制器僅對其實際控制的視圖負責。將此工作移至'-viewDidLoad'可以減少兩個控制器之間的耦合。 – 2011-04-12 04:34:06

相關問題