Показать модальное окно в середине метода
Итак, у меня есть программа, которая после того, как происходит блок try/catch, мне нужно, чтобы появилось модальное окно, чтобы пользователь мог сделать конкретный выбор, тогда я бы хотел, чтобы программа продолжала. Я понятия не имею, как заставить это работать, и я продолжаю получать эти исключения.
*** Assertion failure in -[NSApplication _commonBeginModalSessionForWindow:relativeToWindow:modalDelegate:didEndSelector:contextInfo:], /SourceCache/AppKit/AppKit-1187.34/AppKit.subproj/NSApplication.m:3920
Exception detected while handling key input.
Modal session requires modal window
Я сконфигурировал свой модальный лист так, чтобы он отображался двумя различными способами. Первый способ - через нажатие кнопки, а второй - после блока try catch. Когда я делаю это появляется через нажатие кнопки, которая связана непосредственно с Configure Game
он работает нормально, но когда я делаю это через блок try catch в другом методе, он выдает все исключения, описанные выше.
//Method that opens the modal sheet
- (IBAction)configureGame:(id)sender
{
//Calls a webview for the user to go to a specific location
NSString *FGstarter = @"http://www.google.com";
NSURL *FGplayerUrl = [NSURL URLWithString:FGstarter];
[webView setMainFrameURL:[FGplayerUrl absoluteString]];
//Opens the Modal Sheet
[NSApp beginSheet:configureSheet modalForWindow:mainWindow
modalDelegate:self didEndSelector:NULL contextInfo:nil];
}
//Select Method to a Select button which also closes the Sheet
- (IBAction)select:(id)sender{
//sets a NSString Instance Var to the Current URL of the webView
currentPage = [webView stringByEvaluatingJavaScriptFromString:@"window.location.href"]);
//Closes the sheet
[NSApp endSheet:configureSheet];
}
-(NSMutableArray *)loadPlayer:(NSString *)name{
@try {
// Code here might cause exception that gets caught in the catch
}
@catch (NSException *exception) {
//When I call this function I get all the exceptions listed in the top of the post
[self configureGame:nil];
//Ideally here what would happen here is the modal sheet would pop up the user would hit the select button that calls the select method then the program continues running.
}
NSString *page = currentPage;
//...Continue Using this method
}
1 ответ
Пожалуйста, не делай этого. Из Apple Docs...
Важно! Во многих средах использование исключений является довольно распространенным явлением. Например, вы можете выдать исключение, чтобы указать, что подпрограмма не может выполняться нормально - например, когда файл отсутствует или данные не могут быть проанализированы правильно. Исключения являются ресурсоемкими в Objective-C. Вы не должны использовать исключения для общего управления потоком или просто для обозначения ошибок. Вместо этого вы должны использовать возвращаемое значение метода или функции, чтобы указать, что произошла ошибка, и предоставить информацию о проблеме в объекте ошибки. Для получения дополнительной информации см. Руководство по программированию Обработки ошибок.
Смотрите также лучший ответ на этот вопрос:
При переносе кода Java в ObjC, как лучше всего представлять проверенные исключения?