سؤال

أقوم بإنشاء تطبيق يعتمد على قالب الأداة المساعدة من Xcode ، والذي أضفت إليه بعض المشاهدات. سيكون هيكل التطبيق الخاص بي على النحو التالي:

  • MainView (قائمة التطبيق)

    • عرض الجانب الوجه (آلة حاسبة)

    • uinavigationcontroller

    • عرض الإعدادات

      • ViewDidload: uitabbarcontroller

                - Tab1 view (options)
                - Tab2 view (information text)
        

يمكنني التنقل بشكل صحيح من Mainview الخاص بي إلى عرض الجانب الخاص بي ، وهو أيضًا عرض الجذر لوحدة التحكم في الملاحة. من عرض الجانب الخاص بي ، أدفع طريقة عرض ثانية لوحدة التحكم في التنقل الخاصة بي (عرض الإعدادات) التي تم تكوينها لإظهار uitabbarcontroller ، مع علامات تبويب ، بمجرد تحميلها (مع ViewDidload).

إذا قمت بإزالة uitabbarcontroller ، فيمكنني العودة دون أي مشاكل إلى عرض الجانب الخاص بي باستخدام "PopViewController" من عرض الإعدادات. تأتي المشكلة إذا قمت بتحميل UITabBarController في طريقة العرض في عرض الإعدادات الخاصة بي ... تعمل علامات التبويب بشكل مثالي ، لكنني غير قادر على العودة إلى عرض الجانب الخاص بي (عرض الجذر لوحدة التحكم في التنقل) بعد الآن.

يمكنني العودة إذا استخدمت شريط التنقل في وحدة تحكم التنقل ، لكنني أريد تكوين أزراري الخاصة وإخفاء شريط التنقل.

حتى الآن جربت الطرق التالية:

  • self.navigationController popviewControllerAnimated: نعم] ؛

  • self.navigationController poptorootviewControllerAnimated: نعم] ؛

  • self.navigationController poptoviewController: flipsideviewController الرسوم المتحركة: نعم] ؛

لكن يبدو أنهم لا يعملون. أول اثنين فقط لا يفعلون شيئًا (تظل الشاشة كما كانت) ، والثالث لا يتعرف على "FlipsideViewController" (ربما لأنه مندوب من MainViewController؟).

هل هناك طريقة للتحقق من ما يفعله بالضبط زر "العودة" في شريط التنقل إذا قمت بتنشيطه؟

هل يجب أن أستخدم المندوبين؟

هل يمكنني استدعاء طريقة PopViewController في طريقة عرض الإعدادات الخاصة بي من أي من مشاهدين TAB؟

هذه وجهة نظري من جانب الوجه:

- (IBAction)showSettingsView {
    SettingsViewController *controller = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];
    controller.title = @"Settings";
    [self.navigationController pushViewController:controller animated:YES];
    [controller release];
}

هذا هو عرض الإعدادات الخاص بي:

- (void)viewDidLoad {
    [super viewDidLoad];

    tabBarController = [[UITabBarController alloc] init];

    Tab1ViewController* vc1 = [[Tab1ViewController alloc] init];
    Tab2ViewController* vc2 = [[Tab2ViewController alloc] init];

    NSArray* controllers = [NSArray arrayWithObjects:vc1, vc2, nil];
    tabBarController.viewControllers = controllers;

    [self.view addSubview:tabBarController.view];
}

وطريقة العودة في أحد طرق عرض علامة التبويب:

- (IBAction)backFromTab1View {
    [self.navigationController popToViewController:FlipSideViewController animated:YES];
}

شكرا جزيلا وآسف إذا كان السؤال أساسيًا جدًا!

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

المحلول

لقد قمت بالفعل بحل المشكلة في إنشاء uinavigationbar الخاص بي في عرض الإعدادات واستخدام:

[self.view insertSubview:tabBarController.view belowSubview:myNavigationBar];

يقوم ذلك بإدراج بقية العرض أسفل شريط التنقل وما زلت أستطيع استخدامه لتكوين زر ينبثق عن العرض والعودة إلى الشاشة السابقة.

استغرق الأمر مني بعض الوقت لإدراك الاختلافات بين "addsubview" و "insersubview + Belowsubview". اسف بشأن ذلك!

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