Проблемы с UIActionSheet на iPad - PullRequest
       13

Проблемы с UIActionSheet на iPad

2 голосов
/ 04 октября 2011

Я делаю приложение совместимым для iPhone и iPad и показываю средство выбора на листе действий следующим образом:

actionSheet = [[UIActionSheet alloc] initWithTitle:@"Day / Month"
                                          delegate:self
                                 cancelButtonTitle:nil
                            destructiveButtonTitle:nil
                                 otherButtonTitles:nil];

picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0,40,0,0)];
picker.delegate = self;
picker.showsSelectionIndicator = YES;
[actionSheet addSubview:picker];

[actionSheet showInView:[UIApplication sharedApplication].keyWindow];
[actionSheet setBounds:CGRectMake(0,0,320,469)];

Это хорошо работает для iPhone, но для версии iPad с тем же кодом и оставляя в стороне тех, кто разных размеров, выдает следующую ошибку:

* Завершение приложения из-за необработанного исключения NSInternalInconsistencyException, причина: «Недопустимый параметр не удовлетворительно: view! = nil '

В этой строке:

[actionSheet showInView:[UIApplication sharedApplication].keyWindow];

Я пробовал с showInView: self.view, self.Window, self.view.superview, но ничего ...

Я хочу знать, что дает эту ошибку, и не позволяет мне делать то же самое ... заранее спасибо!

1 Ответ

6 голосов
/ 04 октября 2011

Лист действий превращается в всплывающее окно на iPad. Есть два способа отображения всплывающего окна -

 - (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view
 permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections
 animated:(BOOL)animated;

 - (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item
 permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections
 animated:(BOOL)animated;

Исходя из этого, я думаю, вы можете попробовать использовать один из следующих методов для представления листа действий-

- (void)showFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated 
- (void)showFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated

вместо использования showInView:.

...