Вызов UIActionSheet, размещенного в AppDelegate, за пределами AppDelegate - PullRequest
0 голосов
/ 01 марта 2012

У меня есть 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 должен быть доступен во всем мире?

Я явно упускаю что-то фундаментальное, но я не уверен, что это такое.

1 Ответ

0 голосов
/ 01 марта 2012

Убедитесь, что ваш AppDelegate соответствует протоколу UIActionSheetDelegate?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...