2012-02-06 70 views
0

我有一段代碼,我想在其中取3個NSString(它們來自3個人UITextField),並將它們附加在一起以創建一個日期UILabel檢查三個UITextfields的數據,然後執行一個動作

-(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上調用該操作。

回答

0

當文本字段爲空時,NSString變量將包含一個空字符串值(不是nil),它是一個長度爲零的字符串。

您應該檢查字符串的length。 (即使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)) 
+0

真棒,這就是我正在尋找的答案。謝謝! – Jonnybellman 2012-02-07 21:22:10

相關問題