2011-10-20 156 views
0

我有一個按鈕的表視圖單元格,當按下時,需要調用不同的視圖控制器的方法。我跟着這個tutorial,它顯示了一種方式來看故事板中的另一個視圖控制器,但它涉及硬編碼視圖控制器的位置。任何時候我會改變我的視圖控制器的順序,我需要更新我的代碼,我知道我會搞砸的。從另一個視圖控制器的調用方法iOS StoryBoard

這裏是他們的方法:

UITabBarController *tabBarController = (UITabBarController *) 
self.window.rootViewController; 
UINavigationController *navigationController = 
[[tabBarController viewControllers] objectAtIndex:0]; 
PlayersViewController *playersViewController = 
[[navigationController viewControllers] objectAtIndex:0]; 
playersViewController.players = players; 

哎呀,那是什麼?我們希望將播放器陣列分配給PlayersViewController的 播放器屬性,以便它可以將此數組用於其數據源 。但是應用程序代理還不知道 PlayersViewController,所以它將不得不挖掘 故事板才能找到它。這是我發現煩人的故事板 的限制之一。使用Interface Builder,您總是在您的MainWindow.xib中擁有對應用程序委託的 引用,並且您可以從您的頂級視圖控制器到 應用程序委託的連接點建立連接。目前故事板不可能。您的 無法從您的頂級視圖 控制器中引用應用程序代理。這是不幸的,但我們總是可以通過編程獲得這些參考文獻。

有人知道更清潔的方法嗎?

我試圖在我的表格視圖單元格中創建一個IBOutlet到另一個視圖控制器,但由於某種原因我無法按住Ctrl鍵並拖動到另一個視圖控制器。

我也試着設置我的按鈕的IBAction爲我在其他視圖控制器,但我需要知道被點擊哪一行,唯一的信息,我可以從-(IBAction) addButtonClicked:(id)seder得到的是sender信息,這僅僅是RectButton

謝謝!

回答

0

作爲一種變通方法,你可以在InterfaceBuilder中的sendertag屬性設置的東西,然後只需在addButtonClicked:方法比較[sender tag]。我相信標籤是int s。

+0

感謝您的想法。我最終轉而使用委託來處理它,但標籤是一個好主意。此外,我在Apple演示中看到,有一個[UIViewController storyboard]方法,他們說這是用於在Storyboard上加載任意ViewController。我也會看看。但是,感謝這個想法。我確定我會在某個地方使用它 –

相關問題