Показать ActionSheet в Popover - что я делаю не так? - PullRequest
1 голос
/ 07 июля 2011

Самс ** Учите себя iPad Разработка приложений за 24 часа говорит, что я могу «отобразить лист действий« без анимации », заполняя полный всплывающий вид при первом его появлении ... Для этого вам нужно показатьлист действий с методом

showFromRect: inView: анимированный

с параметром «rect», равным размерам всплывающего окна, представление, установленное на представление контроллера представления всплывающего окнаи "animated" установлен в false. Отображение листа действий должно происходить при первой загрузке представления popover, например, в методе viewDidLoad контроллера представления popover.

OK, просто ..Вот мой код в методе viewDidLoad моего поповера:

- (void)viewDidLoad {

self.contentSizeForViewInPopover=CGSizeMake(400.0,400.0);


    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Available Actions" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Destroy" otherButtonTitles:@"Negotiate", @"Compromise", nil];

    [actionSheet showFromRect:[self.view bounds] inView:self.view  animated:NO];

    [actionSheet release];

    [super viewDidLoad];
}

Но каждый раз при параметре inView:self.view происходит сбой, за исключением:

Invalid parameter not satisfying view != nil

Есть идеи?

Заметьте, если я вставлю этот же код в метод IBAction и вызову его с помощью кнопки во всплывающем окне, он будет работать без сбоев!

Ответы [ 2 ]

2 голосов
/ 07 июля 2011

Одним из решений является вызов UIActionSheet в viewWillAppear или viewDidAppear: например:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [self showActionSheet];
}

- (void)showActionSheet {
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Available Actions" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Destroy" otherButtonTitles:@"Negotiate", @"Compromise", nil];

    [actionSheet showFromRect:[self.view bounds] inView:self.view  animated:NO];

    [actionSheet release];
}
0 голосов
/ 07 июля 2011

self.view еще не был полностью создан, когда вызывается этот код.

Я бы предложил, в качестве хакерской альтернативы, поставить короткую (0,1 секунды или что-то) NSTimerваш метод IBAction в качестве обратного вызова.

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