سؤال

كيف يمكنني إزالة أ UITabBarItem من UITabBar?

لم أجرب أي شيء ، لأنني لم أجد أي شيء من عمليات بحث Google أو الوثائق UITabBar, UITabBarController, ، أو UITabBarItem.

شكرا لك مقدما! قون

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

المحلول

uitabbar لديه nsarray مجموعة من العناصر. نظرًا لأن خاصية العناصر عبارة عن nsarray وليس nsmutablearray, ، يجب عليك إنشاء nsarray جديد من الكائن الحالي الخالي من الكائن الذي تريد إزالته ، ثم قم بتعيين خاصية العناصر على الصفيف الجديد.

/* suppose we have a UITabBar *myBar, and an int index idx */
NSMutableArray *modifyMe = [[myBar items] mutableCopy];
[modifyMe removeObjectAtIndex:idx];
NSArray *newItems = [[NSArray alloc] initWithArray:modifyMe];
[myBar setItems:newItems animated:true];

نصائح أخرى

نصيحة مايك كارون سوف يلقي استثناء إذا كنت تنوي تعديل tabbar ينتمي إلى وحدة تحكم.

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

في هذه الحالة self.tabBarItem=nil سوف يزيله.

ملاحظة: يبدو أن هذا لا يعمل في iOS 11. كان لا يزال جيدًا في iOS 10.

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

UITabBar *oldbar = self.tabBarController.tabBar;
UITabBar *newbar = [[UITabBar alloc] initWithFrame:CGRectMake(0,0,oldbar.frame.size.width,oldbar.frame.size.height)];
NSMutableArray *olditems = [[oldbar items] mutableCopy];
[olditems removeObjectAtIndex:0];
NSArray *newitems = [[NSArray alloc] initWithArray:olditems];
[newbar setItems:newitems animated:false];
[oldbar addSubview:newbar];

أن طبقاتها نظيفة أعلى tabbar القديم ، وتحافظ على وظائفها.

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