كيف يمكنني إزالة زر من شريط أدوات وحدة التحكم على iPhone؟
-
26-09-2019 - |
سؤال
لدي رمز يعمل بشكل رائع لإضافة زر إلى شريط الأدوات:
NSArray* toolbarItems = [NSArray arrayWithObjects:flexibleSpace,shuffleBarItem,flexibleSpace,nil];
self.toolbarItems = toolbarItems;
ومع ذلك ، أريد أيضًا أن أكون قادرًا على إزالة عناصر شريط الأدوات. عندما أستخدم الطريقة أدناه ، يتعطل طلبي:
NSArray* toolbarItems = [NSArray arrayWithObjects:flexibleSpace,nil];
self.toolbarItems = toolbarItems;
هل يعرف أي شخص كيف يمكنني تغيير شريط الأدوات ديناميكيًا على iPhone؟
شكرًا!
المحلول
تغييره إلى أ NSMutableArray
.
NSMutableArray* _toolbarItems = [NSMutableArray arrayWithCapacity: 3];
[ _toolbarItems addObjects: flexibleSpace,shuffleBarItem,flexibleSpace,nil];
self.toolbarItems = _toolbarItems;
عندما تريد إزالة العناصر من الصفيف:
NSInteger indexOfItem = ...
[ _toolbarItems removeObjectAtIndex: indexOfItem ];
self.toolbarItems = _toolbarItems;
لاحظ أنه في هذه الحالة يجب ألا تستخدم removeObject
نظرًا لأن لديك كائنات متكررة في صفيفك ، والاتصال [ _toolbarItems removeObject: flexibleSpace ]
سيقوم بالفعل بإزالة كلتا الحالتين flexibleSpace
في الصفيف
نصائح أخرى
لإزالة العناصر من الأمام أو الخلف ، يمكنك استخدام subarrayWithRange
, ، بمعنى آخر:
NSRange allExceptLast;
allExceptLast.location = 0;
allExceptLast.length = [self.toolbarItems count] - 1;
self.toolbarItems = [self.toolbarItems subarrayWithRange:allExceptLast];
إذا كنت ترغب في إزالة الكائنات من الوسط ، فيمكنك إما استخدامها -[NSArray filteredArrayUsingPredicate:]
(والتي قد تكون معقدة بشكل مفرط) ، أو القوة الغاشمة:
NSMutableArray *mutToolbarItems = [NSMutableArray arrayWithArray:self.toolbarItems];
[mutToolbarItems removeObjectAtIndex:<index of object>];
self.toolbarItems = mutToolbarItems;
لاحظ أنه يجب ألا ترسل removeObjectAtIndex:
ل self.toolbarItems
مباشرة (حتى لو كنت تستخدم الطريقة أعلاه) ، منذ ذلك الحين toolbarItems
تعرض ك NSArray
-ستحصل على تحذير للمترجم ، وربما تصادم (نظرًا لأنه ليس لديك سيطرة على ما إذا كان سيتم تنفيذه فعليًا ك NSMutableArray
خلف الكواليس).