【问题标题】:IOS segue(push, modal or custom) from button not working来自按钮的 IOS segue(推送、模态或自定义)不起作用
【发布时间】:2013-09-12 18:05:51
【问题描述】:

过去两天我一直在试图找出这个问题,因此感谢任何关于为什么会发生这种情况的信息或想法。

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

提前感谢您的任何想法

【问题讨论】:

  • 这个崩溃发生在代码的什么地方?如果还没有,添加异常断点:stackoverflow.com/questions/4961770/…
  • 你现在有没有检查..?我认为你在设置按钮标题的文本或设置按钮的 IBAction 时犯了错误。是不是你做错了什么。

标签: ios storyboard segue


【解决方案1】:

好的,所以我发现了问题所在,我什至没有意识到我制作的按钮正在调用 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 试图帮助我!

【讨论】:

    【解决方案2】:

    检查您的 ViewController 上的按钮引用 Outlet 连接。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 可以通过拖放segue的链接来调用该属性吗?
      • 你想做什么?您通常在代码中访问属性以检查或设置它们的值。
      • 我只是在制作一个按钮以返回到第一个视图控制器(这是通过在 IB 中添加按钮然后从按钮拖动到我需要去的视图并选择推送操作,这也是我使用所有其他按钮的方式),我根本不想向该视图发送任何数据,我的应用程序中有许多其他按钮使用 segues 没有问题。我不知道我会在哪里尝试访问 UIButton 文本属性,我正在更改情节提要中的文本属性我没有 UIButton 代码更改按钮上的内容。我很困惑,我是ios的新手
      • 好的,我刚刚这样做了,它只返回文本框和单元格标签文本的结果,我也搜索了 UIButton 但没有找到结果,我已经从那个按钮中删除了所有 IBActions,按钮有效,只是当我向它添加一个segue然后它给出了那个错误
      • 该 segue 上是否运行任何代码? 确实在一个按钮或另一个按钮上调用文本...也许您认为连接到文本框的内容连接到按钮?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多