iOS故事板松散连接?

时间:2012-05-16 19:24:40

标签: iphone ios xcode storyboard viewcontroller

我有一个非常简单的应用程序,只有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。

2 个答案:

答案 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没有单独的标识符,您可以使用发件人来确定正在按下哪个按钮。

祝你好运!