【问题标题】:Checking three UITextfields for data, then performing an action检查三个 UITextfield 的数据,然后执行操作
【发布时间】:2012-02-06 22:50:33
【问题描述】:

我有一段代码,我想在其中获取三个 NSStrings(来自 3 个单独的 UITextFields)并将它们附加在一起以在 UILabel 中创建一个日期:

-(IBAction)numberEntered:(id)sender
{ 
    if (dayEntry != nil && monthEntry !=nil && yearEntry !=nil){
        NSString *day=[NSString stringWithFormat:@"%@/%@/%@", dayEntry, monthEntry,       yearEntry];
        [dateOutput setText: day];
    }
}

基本上,我希望if 语句在运行[dateOutput setText: Day] 代码行之前检查所有文本字段是否已输入数据。

目前,只要我在第一个 UITextField(即 dayEntry)中输入一个数字,它就会起作用。

通过“Editing Did End”对每个 UILabel 调用该操作。

【问题讨论】:

    标签: ios nsstring uilabel


    【解决方案1】:

    当文本字段为空时,NSString 变量将包含一个空字符串值(不是nil),它是一个长度为零的字符串。

    您应该改为检查字符串的lengths。 (即使NSString 变量恰好是nil,对它们调用length 也会返回0 而不会崩溃。)

    因此将if 条件更改为:

    if ((dayEntry.length > 0) 
         && (monthEntry.length > 0) 
         && (yearEntry.length > 0))
    

    如果您还想处理字符串仅包含空格的情况(例如,如果用户在文本字段中键入一个空格),那么您首先必须修剪空格,然后检查length

    NSCharacterSet *ws = [NSCharacterSet whitespaceCharacterSet];
    
    if (([dayEntry stringByTrimmingCharactersInSet:ws].length > 0)
        && ([monthEntry stringByTrimmingCharactersInSet:ws].length > 0)
        && ([yearEntry stringByTrimmingCharactersInSet:ws].length > 0))
    

    【讨论】:

    • 太棒了,这正是我正在寻找的答案。谢谢!
    猜你喜欢
    • 2011-11-13
    • 2014-06-20
    • 2018-12-23
    • 2010-11-10
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    相关资源
    最近更新 更多