iPhone: لا يمكن العودة من عرض المناظر الطبيعية إلى عرض صورة

StackOverflow https://stackoverflow.com/questions/3149921

سؤال

أنا أعمل على تطبيق (أول) ، وهو تطبيق Tabbar أساسًا. لكي نكون أكثر دقة: - وحدة تحكم عرض تسجيل الدخول - وحدة تحكم شريط علامات تبويب (عند الانتهاء من تسجيل الدخول) - وحدة تحكم عرض المناظر الطبيعية يتم استخدامها عند تحول أول itel من tabbar من صورة إلى مشهد.

لذلك ، عندما أكون في علامة التبويب الأولى ، يجب أن أكون قادرًا على الانتقال إلى عرض المناظر الطبيعية لعرض بعض البيانات الأخرى. في وحدة التحكم في شريط علامة التبويب ، قمت بتطبيق هذه الطرق:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if([self selectedIndex] == 0)
    return YES;

return NO;
}


- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];

// Get AppDelegate
MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate];

 if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
 {
     // Remove TabBarView and add graph Landscape View   
     [self.view removeFromSuperview];
     [delegate setSubViewLandscapeViewController];
 }
}

في المندوب ، قمت بتطبيق setsubviewlandscapeviewController و setsubviewtabbarcontroller:

- (void)setSubViewTabBarViewController {    
[window addSubview:[tabBarController view]];
}

- (void)setSubViewGraphLandscapeViewController {
[window addSubview:[landscapeViewController view]];
}

أريد أن يعرض LandscapeViewController فقط في وضع المناظر الطبيعية ، بعد ذلك (في LandscapeViewController):

- (void)viewWillAppear:(BOOL)animated {
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
}
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

NSLog(@"willRotateToInterfaceOrientation");
}

جزء من هذا يعمل بشكل جيد ، أعني أن التبديل من الصورة إلى المناظر الطبيعية على ما يرام (عندما أكون في علامة التبويب الأولى) ، يتم إزالة tabbarcontroller من الرؤية الإشراف ويتم إضافة عرض المناظر الطبيعية كقصة فرعية بدلاً من ذلك.

الشيء هو ... لا أعرف كيفية التبديل إلى وضع الصورة (ثم قم بتحميل وحدة التحكم السابقة ، Tabbar One باستخدام SetSubViewTabbarViewController من مندوبتي). لا يبدو أن أيا من Willrotatetooriteration ، WillrotateFromorientation ، .. يتم تشغيله عندما أقوم بالفعل بنقل الجهاز من عرض المناظر الطبيعية ...

باختصار ، عندما أكون في عرض المناظر الطبيعية ، لا أعرف ماذا أفعل للعودة إلى عرض Tabbar ... أنا عالق في عرض المناظر الطبيعية بمجرد أن أكون في هذا.

شكرا جزيلا لمساعدتكم،

لوك

هل كانت مفيدة؟

المحلول 2

حسنًا ، تمكنت من الحصول على حل لهذه المشكلة. في الواقع ، أثناء الانتقال من الصورة إلى المناظر الطبيعية ، قمت بإزالة TabbarController من عرض Window Subview وإضافة LandscapeViewController بدلاً من ذلك. يبدو أنه لم يكن الشيء الصحيح الذي يجب القيام به. بدلاً من ذلك ، أقوم بإضافة LandscapeViewController كمظهر فرعي لـ TabbarController وأزله عند الانتقال من المناظر الطبيعية إلى الصورة. لا يزال لدي مشكلة ولكن مع وضع y من عرض المناظر الطبيعية والذي يبدو أنه يتغير عندما أقوم بالعديد من الدوران غير المباشر على التوالي .... مع التحيات ، لوك

نصائح أخرى

انظر إلى مخطط الفطيرة في CPTESTAPP-IPHONE في مجلد الأمثلة. إنه يتعامل مع الدوران من خلال التنفيذ -(void)didRotateFromInterfaceOrientation: وتغيير حجم الرسم البياني بعد الدوران.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top