我有一个非常简单的应用程序,只有2个视图控制器。初始根控制器上有两个UIButtons,它们都通过Storyboard转换到第二个视图控制器。在第二个视图控制器上加载的信息由一个buttonPressed IBAction确定,该IBAction链接到初始视图控制器。我遇到的问题是,一旦我点击两个按钮中的一个,我就会将第二个视图控制器加载为空白。从调试开始,我注意到在加载第二个视图后调用了buttonPressed函数。如何在第二个视图控制器加载空白之前调用buttonPressed函数?
几乎没有涉及任何代码,我有两个UIButtons标记为1和2,按钮按下功能加载两个文本文件,具体取决于发送者标签等于1或2.所有内容都在Storyboard中链接。有什么建议吗?
* buttonPressed功能:
if([sender tag] == 1)
count = 1;
否则
count = 2;
计数确定要加载的文件。
*在Storyboard中,我只有2个视图控制器(无导航或其中任何一个),初始视图上有两个UIButtons,第二个文本视图显示文本。 UIButtons连接到buttonPressed和第二个视图控制器segue。
答案 0 :(得分:1)
按下按钮不要打扰IBAction。让按钮转到新控制器并使用prepareForSegue:sender:
找出点按了哪个按钮(发件人)。
然后,您可以获得对即将出现的控制器的引用...
SecondController *next = (SecondController *)[segue destinationViewController];
...并告诉它要加载哪个文件,它可以在viewDidLoad:
中执行。
答案 1 :(得分:0)
这听起来像是prepareForSegue
的情况!
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"First Button Segue Identifier"])
{
ViewController *theViewController = segue.destinationViewController;
theViewController.textProperty = self.firstButtonText;
}
else if ([[segue identifier] isEqualToString:@"Second Button Segue Identifier"])
{
ViewController *theViewController = segue.destinationViewController;
theViewController.textProperty = self.secondButtonText;
}
}
你去了,它非常通用,因为我不知道你的变量名或你正在使用的文本。同样,如果segue没有单独的标识符,您可以使用发件人来确定正在按下哪个按钮。
祝你好运!