繁体   English   中英

从另一个View Controller iOS StoryBoard调用方法

[英]Call Method From Another View Controller iOS StoryBoard

我有一个带有按钮的表格视图单元,当按下该按钮时,它需要调用其他视图控制器的方法。 我已经按照本教程进行了学习 ,该教程显示了在故事板上找到另一个视图控制器的一种方法,但是它涉及对视图控制器的位置进行硬编码。 每当我更改视图控制器的顺序时,都需要更新代码,我知道我会搞砸的。

这是他们的方法:

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

kes,那是什么?! 我们想将players数组分配给PlayersViewController的players属性,以便它可以将此数组用于其数据源。 但是应用程序委托者对PlayersViewController尚不了解,因此必须在情节提要中进行挖掘才能找到它。 这是我觉得很烦的情节提要的局限之一。 使用Interface Builder,您始终可以在MainWindow.xib中引用App Delegate,并且可以建立从顶级视图控制器到App Delegate上出口的连接。 目前无法使用情节提要。 您不能从顶级视图控制器引用应用程序委托。 不幸的是,但是我们总是可以通过编程方式获得这些引用。

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

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

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

谢谢!

解决方法是,可以在InterfaceBuilder中将sendertag属性设置为某种值,然后在addButtonClicked:方法中比较[sender tag] 我相信标签是int

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM