كيفية جعل Popover من UisplitView مرئيا في وضع Portrait iPad
-
26-09-2019 - |
سؤال
أرغب في جعل عرض Popover مرئيًا عندما يتحول المستخدم من عرض المناظر الطبيعية إلى عرض الصورة في UisplitView من iPad. على الرغم من أن المستخدم يمكن أن يجعله مرئيًا من خلال النقر على زر شريط ، لكنني أريد أن يكون هذا مؤتمراً لوضع الصورة.
المحلول
Inside " -(Bool) يجب أن يكون MethodorotateToInterfaceorientation" ، تحقق من وجود اتجاه الجهاز. إذا كان صورة ، ثم قدم البوبوفر كما تفعل لجعله مرئيًا عندما يقوم المستخدم بالنقر فوق الزر.
أتمنى لك كل خير.
نصائح أخرى
يرسل UISplitViewController رسائل إلى مندوبه (UisplitViewControllerDelegate). يمكنك تنفيذ أساليب المندوب هذه لإظهار البوبوفر. يمكنك أن تفعل شيئًا كهذا في رمز "وحدة تحكم التفاصيل" الخاصة بك:
#pragma mark -
#pragma mark UISplitViewControllerDelegate implementation
- (void)splitViewController:(UISplitViewController*)svc
willHideViewController:(UIViewController *)aViewController
withBarButtonItem:(UIBarButtonItem*)barButtonItem
forPopoverController:(UIPopoverController*)pc
{
[barButtonItem setTitle:@"Your 'popover button' title"];
self.navigationItem.leftBarButtonItem = barButtonItem;
}
- (void)splitViewController:(UISplitViewController*)svc
willShowViewController:(UIViewController *)aViewController
invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
self.navigationItem.leftBarButtonItem = nil;
}
الجواب المقبول (باستخدام shouldAutorotateToInterfaceOrientation
) لا يعمل بالنسبة لي. إما أنه يحتوي على قطع أثرية دوران (في محاكاة iPad 4.2 و 5.0) أو يظهر فقط عند بدء التشغيل وليس مرة أخرى في الدورات اللاحقة (محاكاة 4.3). ما فعلته بدلاً من ذلك هو إنشاء وظيفة مساعدة صغيرة:
- (void)showPopoverInPortrait {
if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait) {
[self.masterPopoverController presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
}
ودعى هذا في الداخل - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
و - (void)viewDidLoad
للتعامل أيضًا مع بدء التشغيل.