У меня есть в моем AppDelegate в UIActionSheet
, который вызывается:Вызов UIActionSheet, который помещен в AppDelegate снаружи AppDelegate
- (void)showActionSheet {
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Call Lilly" otherButtonTitles:@"Email IMCLONE Trials", @"Email EmergingMed", nil];
[sheet showFromTabBar:self.tabBarController.tabBar];
}
Мне нужно вызвать его из AnotherViewController
. В контроллере у меня есть:
[(LYAppDelegate *)[[UIApplication sharedApplication] delegate] showActionSheet];
... и это не работает. Я получаю ошибку:
[3990:207] *** Assertion failure in -[UIActionSheet _presentSheetFromView:above:], /SourceCache/UIKit_Sim/UIKit-1912.3/UIActionSheet.m:1747
Я предполагаю, что проблема в том, что ссылка на self.tabBarController.tabBar
не действует в рамках AnotherViewController
, но это должно быть, правильно? В конце концов, я могу сделать что-то вроде self.tabBarController.selectedSegmentIndex = N
в AnotherViewController
без проблем.
Я даже попытался изменить showActionSheet:
так, чтобы последняя строка была [sheet showFromView:self.window]
. Конечно, мой _window
должен быть доступен по всему миру?
У меня, очевидно, отсутствует что-то фундаментальное, но я не уверен, что это такое.
Да, и я проверил его изнутри, вызвав 'showActionSheet' в' LYAppDelegate'. –
И вы убедились, что вы вызываете это из основного потока? – deleterOfWorlds
Должен ли я сделать что-нибудь необычное, чтобы назвать это из основного потока? Я вызываю его из 'AnotherViewController', используя' didSelectRowAtIndexPath'. Нет вызовов веб-сервисов, ничего не происходит асинхронно. Есть ли что-то еще, что я должен сделать, чтобы убедиться, что он вызван из основного потока? –