TTStyleSheet لا يعمل عند استعادته بواسطة TTNavigator
-
29-10-2019 - |
سؤال
أنا أستخدم الإصدار 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);
}
}