2011-12-14 22 views
5

Pracuję nad moją pierwszą aplikacją kakao/Objective-C, więc proszę o zachowanie mnie, jeśli robię coś oczywiście niepoprawnego. Mam zainstalowaną aplikację, aby skopiować wszystko, co znajduje się w polu NSTextField w oknie, do innego NSTextField (w tym przypadku etykiety). Jeśli użytkownik nie wprowadził niczego w polu tekstowym, powinien wyświetlić alert, ale tak nie jest. Co jest nie tak z moim kodem?NSAlert box nie wyświetla się

AppDelegate.m:

#import "AppDelegate.h" 

@implementation AppDelegate 

@synthesize window = _window; 
@synthesize textBox1 = _textBox1; 
@synthesize label1 = _label1; 

- (void)dealloc 
{ 
[super dealloc]; 
} 

-(IBAction)setLabelTxt: (id)sender{ 

    if(_textBox1.stringValue != @"") 
     [_label1 setStringValue: _textBox1.stringValue]; 
    else{ 
     NSAlert* msgBox = [[[NSAlert alloc] init] autorelease]; 
     [msgBox setMessageText: @"You must have text in the text box."]; 
     [msgBox addButtonWithTitle: @"OK"]; 
     [msgBox runModal]; 
     } 
} 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    // Insert code here to initialize your application 
} 

także, czy są jakieś prowadnice do metod stosowanych przez elementy kakao UI (takie jak systemy nazewnictwa)? Używam programowania .NET w stylu .NET. @end

+0

Na drugie pytanie, kakao Naming/Kodowanie wytycznych: http: // developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CodingGuidelines/ –

Odpowiedz

10

Oto problem:

if(_textBox1.stringValue != @"")

Ty porównując równość wskaźnik, więc to wyrażenie zawsze zwraca true ponieważ ciąg stały @"" nigdy nie będzie taki sam przedmiot jak ciąg pola tekstowego obiekt.

Poprawny sposób to zrobić porównanie byłoby:

if (![_textBox1.stringValue isEqualToString:@""])

lub nawet lepiej:

if (_textBox1.stringValue.length > 0)

0

Czy próbowałeś modalnie uruchomić alert? beginSheetModalForWindow:

[msgBox beginSheetModalForWindow:self.window 
        modalDelegate:self 
        didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) 
        contextInfo:nil]; 
+0

Nadal nie wyświetla się. – airplaneman19

Powiązane problemy