2014-12-13 5 views
0

В ios7 я могу представить popovercontroller без проблем на iPad, но в ios8 it doesn't work. Я искал решения в Google и здесь, но никто не работает. Это код, который я изменить для ios8:Как представить UIPopoverController в ios8 на iPad

privateChat = [[PrivateChatViewController alloc] initWithNibName:@"PrivateChatViewController" bundle:nil]; 
privateChat.delegate = self; 
popoverController = [[UIPopoverController alloc] initWithContentViewController:privateChat]; 
[popoverController setDelegate:self]; 
//work in ios7 
//[popoverController setPopoverContentSize:CGSizeMake(privateChat.view.frame.size.width,privateChat.view.frame.size.height) animated:YES]; 
//[popoverController presentPopoverFromRect:self.frame inView:self.superview permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

// Edit для ios8, но не работает

privateChat.preferredContentSize = CGSizeMake([privateChat.view.superview superview].frame.size.width,[privateChat.view.superview superview].frame.size.height) ; 
[popoverController setPopoverContentSize: privateChat.preferredContentSize animated:YES]; 
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
[popoverController presentPopoverFromRect:self.frame inView:[self.view.superview] permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 
}); 

Это не работает в ios8 и нет аварии тоже. Что я должен изменить или добавить, чтобы он работал?

+0

Существует некоторая разница в вашем звонке, сначала вы показываете popover на 'self.superview', а во втором -' self.view.superview' –

ответ

1

Вот мой код, который отлично работает в моем проекте (IPad ios8 Objective-C), (я столкнулся с такой же вопрос и ниже код решить мою проблему.) вы должны попробовать это,

 self.popover = [[UIPopoverController alloc] initWithContentViewController:picker]; 
     self.popover.delegate=self; 
     CGRect popoverRect = [self.view convertRect:[_btnimgProfilePic frame] fromView:[_btnimgProfilePic superview]]; 

     popoverRect.size.width = MIN(popoverRect.size.width, 100) ; 
     popoverRect.origin.x = popoverRect.origin.x; 

     // this works properly in my project 

      dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), 
          ^{ 
       [self.popover presentPopoverFromRect:popoverRect inView:self.view 
          permittedArrowDirections:UIPopoverArrowDirectionUp 
              animated:YES]; 
          }); 

я Надеюсь, что это поможет вам.

+0

Спасибо, я проверю его снова с вашим кодом, а я скажет, работает ли он. – malinchhan

+0

не работает, я не знаю почему. – malinchhan

Смежные вопросы