从另一个视图控制器iOS StoryBoard调用方法

时间:2011-10-20 17:36:40

标签: ios xcode uiviewcontroller storyboard

我有一个带有按钮的表格视图单元格,当按下该按钮时,需要调用不同视图控制器的方法。我已经关注了tutorial,它显示了一种方法来获取故事板中的另一个视图控制器,但它涉及硬编码视图控制器的位置。每当我改变视图控制器的顺序时,我都需要更新我的代码,我知道我会搞砸。

以下是他们的方法:

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

哎呀,那是什么?!我们想将球员阵列分配到   PlayersViewController的player属性,所以它可以使用这个数组   它的数据来源。但应用代表对此一无所知   PlayersViewController还没有,所以它将不得不深入挖掘   故事板找到它。这是故事板的局限之一   我觉得很讨厌使用Interface Builder,你总是有一个   您可以在MainWindow.xib中引用App Delegate   建立从顶级视图控制器到插座的连接   App代表。故事板目前无法做到这一点。您   无法从顶级视图引用应用程序委托   控制器。这很不幸,但我们总能得到那些   以编程方式引用。

有人知道更干净的方式吗?

我尝试在我的表格视图单元格中创建一个IBOutlet到另一个视图控制器,但由于某种原因我无法按住Ctrl键并单击并拖动到另一个视图控制器。

我也尝试在我的其他视图控制器中设置我的按钮的IBAction,但是我需要知道点击了哪一行,我可以从-(IBAction) addButtonClicked:(id)seder获得的唯一信息是sender信息,这只是RectButton

谢谢!

1 个答案:

答案 0 :(得分:0)

作为一种变通方法,您可以将InterfaceBuilder中tag的{​​{1}}属性设置为某个属性,然后只需在sender方法中对[sender tag]进行比较。我相信标签是addButtonClicked: s。