سؤال

أحاول تغيير صور Tabbar الخاصة بي في ViewController ، ولكن لعرض الصور الجديدة ، يجب أن أنقر على كل عنصر شريط علامة تبويب.

for (CustomTabBarItem *myItem in self.tabBarController.tabBar.items){
        myItem.enabled = YES; 

        myItem.badgeValue = @"1"; 

        UIImage *myImage =  [[UIImage alloc] initWithContentsOfFile:[[DesignManager sharedManager] getPathOfFile:@"test.png"]];

        *myItem.imageSelect= *myImage; // change images of each item. don't appear if I dont click on the item
}

أي شخص يعرف كيف يمكنني عرض هذه الصور مباشرة؟ شكرًا

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

المحلول

تحتاج إلى استبدال عنصر شريط علامة التبويب القديم مع عنصر جديد. لا يمكنك تحديث الصورة ديناميكيًا خلاف ذلك.

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

self.tabBarItem = [[UITabBarItem alloc] initWithTitle: @"title" image: myImage: tag: nil];

أو يمكنك القيام بذلك من مكان آخر ، على سبيل المثال مندوب التطبيق الخاص بك:

UIViewController* vc = [tabBarController.viewControllers objectAtIndex: 3];
vc.tabBarItem = [[UITabBarItem alloc] initWithTitle: @"title" image: myImage: tag: nil];

نصائح أخرى

أعلم أن هذا سؤال قديم. واجهت نفس المشكلة عندما أحتاج إلى تحديث قيمة الشارة من علامة تبويب نشطة أخرى. إنشاء آخر UITabBarItem سوف يحل مشكلتك الحالية ولكنه يسبب تسرب الذاكرة المحتمل عندما يتم استدعاء هذا الرمز عدة مرات. بالإضافة إلى ذلك ، عندما تصل وحدات التحكم الأخرى في العرض إلى علامة التبويب ، ليس لديهم إشارة إلى تم إنشاؤها حديثًا UITabBarItem. خدعة

vc.tabBarItem = vc.tabBarItem; 

إنه يعمل بالنسبة لي.

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