سؤال

أنا أستخدم الإصدار 1.1 من مكتبة Three20 وأقوم بإعداد ورقة أنماط عامة لتغيير ملف navigationBarTintColor في مندوب التطبيق الخاص بي مثل هذا:

[TTStyleSheet setGlobalStyleSheet:
  [[[DefaultStyleSheet alloc] init] autorelease]];

وهذا يعمل بشكل جيد، إلا عندما تتم استعادة حالة التطبيق عن طريق الاتصال restoreViewControllers في TTNavigator.في هذه الحالة، يعرض شريط التنقل اللون الأزرق الفاتح الافتراضي لنظام التشغيل iOS.عندما أنتقل إلى العرض التالي، تصبح ورقة الأنماط سارية المفعول مرة أخرى.

لقد قمت أيضًا بنشر هذا السؤال على مجموعة Three20 Google.سأقوم بالتحديث هنا إذا وجدت إجابة هناك بالطبع.

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

المحلول

في هذه الأثناء، وجدت حلاً لهذه المشكلة بمساعدة الأشخاص الطيبين في الموقع مجموعة Three20 جوجل.

باختصار:ستعمل ورقة الأنماط العامة بشكل صحيح، إذا كانت جميع وحدات التحكم في العرض تنحدر من TTViewController.عند الوراثة مباشرة من UiviewController ، هناك حاجة إلى عرض عمل لفرض السلوك المطلوب.استخدم إما الفئات أو فئة فائقة مشتركة لتنفيذ الطريقة التالية لوحدات التحكم في العرض الخاصة بك:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    // Work-around for Three20 style sheet misbehavior. See:
    //  http://groups.google.com/group/three20/browse_thread/thread/affbd2a0ee2851c8
    //  http://stackoverflow.com/questions/5406827/ttstylesheet-not-workin-when-restored-by-ttnavigator
    if (self.navigationController) {
        self.navigationController.navigationBar.tintColor = TTSTYLEVAR(navigationBarTintColor);
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top