كيف يمكنني إزالة زر من شريط أدوات وحدة التحكم على iPhone؟

StackOverflow https://stackoverflow.com/questions/2618546

سؤال

لدي رمز يعمل بشكل رائع لإضافة زر إلى شريط الأدوات:

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 خلف الكواليس).

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