应用程序在调用popViewController时崩溃:错误:alertView:didDismissWithButtonIndex:

时间:2010-06-24 09:14:11

标签: iphone crash alert

问题描述如下:

我有一个视图,比方说,视图A.为了输入某些数据,我有一个警报,里面有一个文本字段,弹出。一旦用户在文本字段中输入数据,我就有一个alertView:didDismissWithButtonIndex:函数如下:

- (void)alertView:(UIAlertView *)alertView:didDismissWithButtonIndex:(NSInteger)buttonIndex {

    [ amountEntered resignFirstResponder];           //dismiss keyboard

    if (buttonIndex == 1) {                          //OK clicked, do something

        if(lblShowTypedText.text)

            data.investmentAmount = lblShowTypedText.text ;

        [myTable reloadData];
    }
}

然后我在View A上有一个提交按钮,点击该按钮会弹回到上一个视图。这是我的应用程序崩溃的地方。控制台中没有消息,但是经过多次运行后,我得到了一条这样的消息:

* - [NSCFType alertView:didDismissWithButtonIndex:]:无法识别的选择器发送到实例0x3c4dce0 2010-06-24 15:33:22.970 BankingAppln [2895:207] CoreAnimation:忽略异常:* - [NSCFType alertView:didDismissWithButtonIndex:]:无法识别的选择器发送到实例0x3c4dce0

因此我将问题缩小到alertView:didDismissWithButtonIndex:function。如果我没有拨打警报,但直接回到上一个视图,一切都很好。

我必须在alertView中执行错误:didDismissWithButtonIndex:function。

请帮助!!

4 个答案:

答案 0 :(得分:1)

要检查的一些事项:

  • 您将AlertView的委托设置为正确的类(视图A)?
  • 您的类(视图A)实现了UIAlertViewDelegate协议。
  • 可能不是,但你永远都不会知道:你的名字不等于苹果私人api中的名字(不要笑,一周前发生在我身上,花了我2​​个小时算出来)?

编辑: 另一件需要检查的事情:

  • 你的委托方法有正确的返回类型(在这种情况下我认为它是“无效的”)?

答案 1 :(得分:0)

你真的在班上有这个方法,alertView:didDismissWithButtonIndex:并在你调用它时发布代码

答案 2 :(得分:0)

您需要发布调用方法的位置..但是从您提供的错误消息中,问题是您调用的方法不正确。

如果它是您使用上述实现定义自己的方法

[self alertView:myAlertView didDismissWithButtonIndex:myIndex];

另外,在你的声明中,你在参数alertView之后有一个分号,你只需要一个空格。

答案 3 :(得分:0)

我遇到了类似的问题,事实证明,在自动引用计数到位的情况下,我需要将弹出窗口的引用作为属性保留,以便它不会被引用。那很好但是我过于热心并开始明确地做popup = nil;这样的事情,这让我陷入困境,因为弹出窗口的一些委托方法是在我没有删除我保留的引用之后调用的现在这个弹出窗口不再存在,框架由于这个小事实而崩溃。

[__NSCFString alertView:didDismissWithButtonIndex:]: unrecognized selector sent to instance 0x9117c0

所以我决定在需要的时候继续分配一个新的弹出窗口,而不是明确地将旧的引用分开。这为我解决了这个问题。