2012-01-26 202 views
9

我有一堆UITextFields,用戶在按提交按鈕之前必須輸入一個數字(鍵盤是數字鍵盤)。當按下提交按鈕時,會調用一個「檢查」方法來檢查數據是否有效......也就是說不是空的。現在,如果它只是一個textField,但是我有14,那麼這很容易。我想要一個簡單的if語句來檢查其中一個字段或所有字段是否爲空...如何檢查UITextFields是否爲空?

我有以下UITextFields聲明:number1,number2,number3等etc等 和我有以下字符串宣佈哪些可以採取值UITextField.text ...他們宣佈:temp1,temp2,temp3等...

我將如何如果聲明像下面那樣,那麼去製作一個僞代碼?

感謝

if (!valid) 
{ 

NSLog (@"not valid) 
} 

else 
{ 
//proceed to next method 
} 

回答

25

我假設UITextField變量爲* tfield所以這裏是解決方案

if (tfield.text.length > 0 || tfield.text != nil || ![tfield.text isEqual:@""]) 
{ 
    //do your work 
} 
else 
{ 
    //through error 
} 
+0

這將如何工作,因爲不是所有的UITextField變量都可以命名爲* tfield?謝謝 – Teddy13

+0

textFieldShouldReturn:(UITextField *)tfield使用這個委託函數nad把上面的代碼放在它裏面檢查用戶按下回車鍵 –

+0

這應該用&&代替或者|| – user1686342

0
you can put like this 


    if(![temp1 isEqualToString:@""] && ![temp2 isEqualToString:@""] ... ![temp14 isEqualToString:@""]) 
    { 
    NSLog (@" valid); 
    } 
    else 
    {NSLog (@"not valid); 
} 
+0

這不是錯誤的方式嗎?如果全部不等於'@「」'那麼它是有效的。 – mattjgalloway

+0

是的,我有正確的 –

7

我覺得這樣的事情是你想要的。它只是使用isEqualToString:來檢查字符串是否爲空。

NSString *temp1 = number1.text; 
NSString *temp2 = number2.text; 
... ///< temp3, etc 

if ([temp1 isEqualToString:@""]) { 
    // temp1 not valid 
} else if ([temp2 isEqualToString:@""]) { 
    // temp2 not valid 
} ... { 
    // temp3, etc 
} else { 
    // Valid 
} 

你可能想抓住temp1時使@" "也將是空白修剪空白字符。對於這一點,看看NSString就像這樣stringByTrimmingCharactersInSet:方法:

NSString *temp1 = [number1.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 

更新:

如果你想用一個數組,你可以不喜歡這樣做:

NSMutableArray *array = [NSMutableArray arrayWithCapacity:0]; 
[array addObject:number1.text]; 
[array addObject:number2.text]; 
... ///< number3, etc 

BOOL ok = YES; 
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
    if ([obj isEqualToString:@""]) { 
     ok = NO; 
     *stop = YES; 
    } 
}]; 

if (ok) { 
    // Valid 
} else { 
    // Not valid 
} 
+0

謝謝,但不是我想到的...有沒有更簡單的方法,如可能把所有的人放入數組,然後檢查數組是否包含空字符串? – Teddy13

+0

這不會比寫出更快。你必須遍歷數組,看看是否有任何字符串是空的。取決於你有多少。 – mattjgalloway

+0

@泰迪13添加了一個數組的方式,如果你真的想這樣做。 – mattjgalloway

1

像這樣的事情會通過你的UITextFields迭代:

[self.view.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
    if ([obj isKindOfClass:[UITextField class]]) { 
    // do your checks 
    } 
}]; 
5

,或者你可以只調用

[myTextField hasText]; 

將返回NO,如果該字段爲空。