【问题标题】:How do you create a UIAlertView based on the text in a UITextField?如何根据 UITextField 中的文本创建 UIAlertView?
【发布时间】:2013-01-05 02:12:56
【问题描述】:

我想在文本字段中输入文本并根据文本(如果显示“否”)我希望弹出警报视图。我在界面生成器中创建了一个 UITextField 并将其附加到文件所有者中的 UITextField 委托,以便所有这些都得到处理。但是当我在文本字段中输入文本时,特别是没有,然后单击文本字段或移除键盘,没有弹出警报视图。我在 viewcontroller.m 文件中为此创建了一个完整的方法。这是该方法的代码。

-(void)engageAlert {

 if (myTextField.text == @"No") {
      theAlertView = [[UIAlertView alloc] initWithTitle:@"Notice" message:@"MyMessageHere"
      delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
      [theAlertView show];
 }

}

我在这里遗漏了什么吗?当我在文本字段中输入 No 时,什么也没有发生。

【问题讨论】:

    标签: ios6 uitextfield uialertview xcode4.5


    【解决方案1】:

    我认为罪魁祸首是台词

    myTextField.text == @"No" 
    

    因为您要比较两个永远不会匹配的指针。

    @"No" = 0x12341234 或者 NSString 的静态地址的任何地址(@"" 可以被认为是编译器创建 NSString 对象的简写)

    你想要的是类似的东西

    if( [myTextField.text isEqualToString:@"No"])
    

    还要检查你不会使用 theAlertView 泄漏内存,因为我看不到你在 sn-p 中释放它的位置。

    【讨论】:

    • 这是有道理的,我将 if 语句更改为您所拥有的,但我仍然没有得到任何回应。退出文本字段界面时有没有办法检查字符串?至于泄漏内存,我真的不知道。您在我的代码中看到的是 uialertview
    • 你什么时候打电话给engageAlert?
    • 我在 viewDidLoad 之后调用了该方法。我想不出其他地方可以调用该方法。理想情况下,我想在用户退出文本字段的界面时调用它,但我知道该怎么做。
    • 如果我在调用 IBAction 按钮后调用该方法,它就可以正常工作。如果可能的话,我想在没有按钮的情况下做到这一点。比如退出界面时检查文本字段字符串的状态
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    相关资源
    最近更新 更多