我有一个带有按钮的表格视图单元格,当按下该按钮时,需要调用不同视图控制器的方法。我已经关注了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
。
谢谢!
答案 0 :(得分:0)
作为一种变通方法,您可以将InterfaceBuilder中tag
的{{1}}属性设置为某个属性,然后只需在sender
方法中对[sender tag]
进行比较。我相信标签是addButtonClicked:
s。