2015-09-07 64 views
0

我試圖編寫一個NSAlert,當某些NSTextFields爲空時出現。 我有3個NSTextFields,我想要一個NSAlert,它顯示列表中哪些TextField爲空。對於一個文本字段,我可能會這樣做,但是我怎樣才能將它編碼爲空的NSTextField出現在Alert中?如果一個Textfield在Altert中爲空,則應該顯示「TextField 1爲空」。如果字段1和2爲空,則應該顯示「TextField 1爲空」,並在第二行「TextField 2爲空」。如果TextFields爲空,請將「informative text」添加到警報

這裏是我的代碼:

if ([[TextField1 stringValue] length] == 0) { 
    NSAlert* alert = [[NSAlert alloc] init]; 
    [alert addButtonWithTitle:@"OK"]; 
    [alert setMessageText:@"Error"]; 
    [alert setInformativeText:@"TextField 1 is empty"]; 
    [alert beginSheetModalForWindow:[self.view window] completionHandler:^(NSInteger result) { 
     NSLog(@"Success"); 
    }]; 
} 
+1

'NSMutableString * messageText = [[NSMutableString alloc] init]; if([[TextField1 stringValue] length] == 0) [messageText appendString:@「Textfield 1 is empty」]; if([[TextField2 stringValue] length] == 0) [messageText appendString:@「Textfield 2 is empty」]; //等等。 if([messageText length]> 0)//我們至少放了一條消息) { //顯示帶有[alert setInformativeText:messageText]的NGAlert; }'? – Larme

+0

@Larme:確實! – mangerlahn

回答

0

我想鏈的if語句來獲得期望的結果。 設置一個空字符串並逐個檢查每個textField。如果該字符串爲空,則將錯誤行添加到該字符串中。附加字符串後不要忘記添加換行符。

我在碼字:

NSString* errorMessage = @""; 

if ([[TextField1 stringValue] length] == 0) { 
    errorMessage = @"TextField 1 is empty.\n"; 
} 

if ([[TextField2 stringValue] length] == 0) { 
    errorMessage = [errorMessage stringByAppendingString:@"TextField 2 is empty.\n"]; 
} 

if ([[TextField3 stringValue] length] == 0) { 
    errorMessage = [errorMessage stringByAppendingString:@"TextField 3 is empty."]; 
} 

if (![errorMessage isEqualToString:@""]) { 
    NSAlert* alert = [[NSAlert alloc] init]; 
    [alert addButtonWithTitle:@"OK"]; 
    [alert setMessageText:@"Error"]; 
    [alert setInformativeText:errorMessage]; 
    [alert beginSheetModalForWindow:[self.view window] completionHandler:^(NSInteger result) { 
     NSLog(@"Success"); 
    }]; 
} 

這樣,你得到的動態輸出,這取決於NSTextField是空的。

+0

非常感謝!它完美的作品! ;) – Robby

+0

不客氣! – mangerlahn

1

您可以通過通知自動獲取的信息。

  • 將標籤1,2,3分配給文本字段。
  • 設置在Interface Builder中的所有文本字段的委託要顯示在警報的類。
  • 實現此方法

    - (void)controlTextDidChange:(NSNotification *)aNotification 
    { 
        NSTextField *field = [aNotification object]; 
        if ([[field stringValue] length] == 0) { 
        NSInteger tag = field.tag; 
        NSAlert* alert = [[NSAlert alloc] init]; 
        [alert addButtonWithTitle:@"OK"]; 
        [alert setMessageText:@"Error"]; 
        [alert setInformativeText:[NSString stringWithFormat:@"TextField %ld is empty", tag]]; 
        [alert beginSheetModalForWindow:[self.view window] completionHandler:^(NSInteger result) {NSLog(@"Success");}]; 
        } 
    } 
    
+0

我還沒有嘗試過,但是不會導致警報立即出現? – mangerlahn

相關問題