どのように私は、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
を送信しないように注意してください - あなたは何も持っているので(おそらくクラッシュをコンパイラの警告を取得していない、とyou'll )それは実際に舞台裏でNSMutableArray
として実装されるかどうかを制御。