0

在过去的两天里,我一直在试图找出这个问题,所以任何关于为什么会发生这种情况的信息或想法都会受到赞赏。

所以我的问题是,当我在界面构建器中向我的视图控制器添加一个按钮并创建该按钮应执行的正常 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

不管我在这个视图中添加多少按钮,它们都会给出这个错误,但是我可以在我的任何其他视图中添加一个按钮,并对这个视图进行segue,它可以完美地工作。

提前感谢您的任何想法

4

3 回答 3

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 试图帮助我!

于 2013-09-12T10:05:51.613 回答
0

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

于 2013-09-12T07:15:11.757 回答
0

答案在那个例外中是正确的:您正在调用texta UIButton,而 UIButton 没有该属性。

您也有可能在 IB 文件中错误地将其连接到实际上应该有text方法的东西。

于 2013-09-12T07:27:50.507 回答