【问题标题】:alertview with textfield gets crashed in iOS带有文本字段的警报视图在 iOS 中崩溃
【发布时间】:2026-02-10 00:00:01
【问题描述】:

我需要使用带有 textfield 的 uialertview 以便将输入的文本传递给 web 服务集成,而应用程序正在运行带有 textfield 的 alertview 显示并且可以在 textfield 中输入文本,但是在单击提交按钮时,相应的类已崩溃,但后退按钮和整个应用程序运行良好。

我用于带有文本字段的警报视图的代码,

{
            //alertview with textfield
           UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Enter your changes"
             message:nil
             delegate:self
             cancelButtonTitle:@"Cancel"
             otherButtonTitles:@"Submit Changes", nil];
             [message setAlertViewStyle:UIAlertViewStylePlainTextInput];
             [message show];
}


- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex

{
    if (buttonIndex == 1)

    {
       text = [[alertView textFieldAtIndex:0] text];

        NSLog(@"passed value %@",text);

    }
}

【问题讨论】:

  • whre 完全崩溃了日志,我认为 text = [[alertView textFieldAtIndex:0] text];这条线崩溃了....什么是文本
  • @JitendraDeore,在没有添加 willdismisswithbuttonindex 的情况下使用 alertview 和 textfield 运行应用程序时,单击提交按钮显示相同的崩溃,因此 text = [[alertView textFieldAtIndex:0] text];我认为不会是这样
  • 我通过运行它检查了你的代码..它永远不会崩溃......代码是完美的。错误可能在您的另一个代码中。
  • 发布更多代码以了解问题

标签: ios uitextfield uialertview


【解决方案1】:

该代码放在哪里?没有更多的上下文,这两个猜测是在黑暗中拍摄的,但它们是常见的陷阱。

我的第一个猜测是,当对话框关闭时,这个对象(它是警报视图的委托)已经死了。并且委托已分配,因此它将在死对象上调用,从而导致崩溃。

另一个可能的原因是您的代码在类方法中,即+(void)showMessage;。然后将委托设置为类而不是对象,这也会触发崩溃。

【讨论】:

    【解决方案2】:

    您可能会声明对象超出范围,当您尝试访问不再存在的对象时会导致崩溃。更多代码会很有用

    【讨论】:

      最近更新 更多