У меня есть UIActionSheet
в моем 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
должен быть доступен во всем мире?
Я явно упускаю что-то фундаментальное, но я не уверен, что это такое.