IOS segue(推,模态或自定义)从按钮不起作用

时间:2013-09-12 07:09:43

标签: ios storyboard segue

过去两天我一直在努力弄清楚这个问题,所以对于为什么会发生这种情况的任何信息或想法都表示赞赏。

所以我的问题是,当我在界面构建器中向我的视图控制器添加一个按钮并创建正常的ibaction代码时按钮按预期执行,然后我从按钮拖放到视图控制器以创建一个segue ,这也很好。

问题出现在我运行应用程序时,应用程序将运行正常,直到我按下按钮(注意:我仍然有按钮不作用的基本框架,但我没有运行任何代码,它是完全空白)进入segue,当我按下按钮时它停止应用程序并给出此错误消息

    2013-09-12 08:43:17.696 MessAround[51565:c07] -[UIButton text]: unrecognized selector sent to instance 0xa1cb6c0
2013-09-12 08:43:17.699 MessAround[51565:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIButton text]: unrecognized selector sent to instance 0xa1cb6c0'
*** First throw call stack:
(0x1d09012 0x11ede7e 0x1d944bd 0x1cf8bbc 0x1cf894e 0x3ac0 0x57cac7 0x57cb54 0x1201705 0x138920 0x1388b8 0x1f9671 0x1f9bcf 0x1f8d38 0x16833f 0x168552 0x1463aa 0x137cf8 0x1f42df9 0x1f42ad0 0x1c7ebf5 0x1c7e962 0x1cafbb6 0x1caef44 0x1caee1b 0x1f417e3 0x1f41668 0x13565c 0x22bd 0x21e5)
libc++abi.dylib: terminate called throwing an exception

无论我在这个视图中添加了多少按钮,他们都会给出这个错误,但是我可以在我的其他任何视图中添加一个按钮,然后对这个视图进行调整,并且效果很好。

提前感谢任何想法

3 个答案:

答案 0 :(得分:3)

好的,所以我发现问题是什么,我甚至没有意识到我所做的按钮是调用prepareForSegue方法,在那个方法中我使用了发件人的数据,但按钮没有提供正确的数据所以它破了。

以下是问题代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    urlToPurchase = [NSString stringWithFormat:@"%@",[sender text]];

    if([[segue identifier] isEqualToString:@"PurchaseDomain"])
    {        
        PurchaseView *pv = [segue destinationViewController];
        pv.urls = _urls;
        pv.domainIsAvailable = domainIsAvailable;
        pv.tld = _tld;
        pv.chosenDomain = urlToPurchase;
    }

}

这是工作代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    /*
      urlToPurchase = [NSString stringWithFormat:@"%@",[sender text]]; Needs to be
      moved to be inside the if statement below
    */

    if([[segue identifier] isEqualToString:@"PurchaseDomain"])
    {        
        //been moved to here
        urlToPurchase = [NSString stringWithFormat:@"%@",[sender text]];

        PurchaseView *pv = [segue destinationViewController];
        pv.urls = _urls;
        pv.domainIsAvailable = domainIsAvailable;
        pv.tld = _tld;
        pv.chosenDomain = urlToPurchase;
    }
}

非常感谢@Eiko特别努力帮助我!

答案 1 :(得分:0)

检查ViewController上的按钮参考插座连接。

答案 2 :(得分:0)

答案恰恰相反:您在text上呼叫UIButton,而UIButton没有该属性。

你的IB文件中错误地将它连接到实际上应该有text方法的东西的可能性很小。