Поле NSAlert не отображается
Я работаю над своим первым в истории приложением какао /Objective-C, поэтому, пожалуйста, потерпите меня, если я делаю что-то явно неправильное. У меня есть приложение, настроенное для копирования того, что находится в NSTextField в окне, в другое NSTextField (в данном случае, метку). Если пользователь ничего не ввел в текстовое поле, он должен отобразить предупреждение, но это не так. Что не так с моим кодом?
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
}
Кроме того, есть ли руководства по методам, используемым элементами пользовательского интерфейса Какао (например, схемы именования)? Я использовал.NET стиль программирования GUI. @конец
2 ответа
Вот ваша проблема:
if(_textBox1.stringValue != @"")
Вы сравниваете равенство указателей, поэтому это выражение всегда возвращает true
потому что строковая константа @""
никогда не будет тем же объектом, что и строковый объект текстового поля.
Правильный способ сделать это сравнение будет:
if (![_textBox1.stringValue isEqualToString:@""])
или даже лучше:
if (_textBox1.stringValue.length > 0)
Вы пытались запустить оповещение модально? beginSheetModalForWindow:
[msgBox beginSheetModalForWindow:self.window
modalDelegate:self
didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:)
contextInfo:nil];