2015-05-19 1 views
1

У меня есть следующий код в ViewController в моем OS X приложение:NSAlert beginSheetModalForWindow не отображает предупреждение

NSAlert *alert = [NSAlert new]; 
    alert.messageText = @"Connection error"; 
    alert.informativeText = @"You do not appear to be connected to the internet"; 
    [alert addButtonWithTitle:@"Third button"]; 
    [alert addButtonWithTitle:@"Second button"]; 
    [alert addButtonWithTitle:@"Ok"]; 

    [alert beginSheetModalForWindow:[[self view] window] completionHandler:^(NSInteger result) { 
     NSLog(@"Success"); 
    }]; 
// [alert runModal]; 

При выполнении этого кода ничего не происходит. Если я закомментирую строку beginSheetModalForWindow и раскомментирую [alert runModal], тогда предупреждение будет отображаться как ожидалось.

Что я делаю неправильно здесь, что оно не отображается в виде листа?

ответ

4

Я полагаю, вы пытаетесь показать NSAlert слишком рано (в то время как окно настройки) попробуйте добавить perfromselector с задержкой, чтобы увидеть, если это так

[self performSelector:@selector(delayed) withObject:nil afterDelay:1.0]; 


-(void)delayed { 
    NSAlert *alert = [NSAlert new]; 
    alert.messageText = @"Connection error"; 
    alert.informativeText = @"You do not appear to be connected to the internet"; 
    [alert addButtonWithTitle:@"Third button"]; 
    [alert addButtonWithTitle:@"Second button"]; 
    [alert addButtonWithTitle:@"Ok"]; 

    [alert beginSheetModalForWindow:[self.view window] completionHandler:^(NSInteger result) { 
     NSLog(@"Success"); 
    }]; 
} 

Если это так, попробуйте показывать его как только окно загрузилось, например, в

- (void)windowDidLoad { 
    //code here 
} 
+0

Именно так. Благодаря!! – Scooter

+0

это сработало для меня тоже, я пробовал это из awakefromnib, но я считаю, что я должен назвать это из windowdidload – Amitg2k12

 Смежные вопросы

  • Нет связанных вопросов^_^