0

私のアプリケーションでは、UINavigationItem の右側に 2 つのボタンが追加され、シミュレーターでは正常に動作しますが、デバイスでテストすると、SIGABRTunrecognized selector sent to NSArray. 右側にボタンを 1 つ追加しようとしましたが、正常に追加され、デバイスでも正常に動作します。ここで私の質問は、何が問題なのですか?

次のコードを使用して右のボタンを追加しています。

NSArray *buttons=[[NSArray alloc] initWithObjects:btnOne,btnTwo,nil]];
myNavItem.rightBarButtonItems=buttons; //Error on device, but works fine on simulator.

私が間違っていることを教えてください。 ありがとう!

4

4 に答える 4

0

myNavItemは のインスタンスではなくUINavigationItemNSArray( をサポートしていないsetRightBarButtonItems) のインスタンスのようです。に関するセリフをもっと見せてもらえますmyNavItemか?

私の疑いは、myNavItem が最初に指していたナビゲーション項目を正しく保持していなかったということです。そして、偶然にも NSArray を指していること。ロギングを改善するためにすべてのオブジェクトが無期限に保持されている場合、このエラーはデバッグ設定で発生しない可能性があります。

このコードがView Controllerのインスタンスから実行される場合は、代わりに次の行を使用してみてください:

self.navigationItem.rightBarButtonItems = buttons;

バージョン 5 より前の iOS の場合:unrecognized selector sent to NSArrayログを受け取る場合、メモリ管理に問題があります。ログはunrecognized selector sent to UINavigationItem、iOS 5 より前の iOS で読み取る必要があります。

メモリの問題が修正されたら、UIBarButtonItem2 つの を含むカスタム ビューで を使用する必要がありますUIButtons

于 2012-04-11T09:14:18.817 に答える
0

あなたの最初の行

NSArray *buttons=[[NSArray alloc] initWithObjects:btnOne,btnTwo,nil]];

最後に追加の右ブラケットがあります。これがそのエラーを引き起こすかどうかはわかりませんが、何らかのエラーが発生するはずです。

于 2012-04-10T15:13:57.993 に答える
0

UISegmentedControl を使用できます。UICatalog コード サンプルをチェックして、ナビゲーション バーでの使用法を確認してください。

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:btn1,btn2,nil]];
   [segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
   segmentedControl.frame = CGRectMake(0, 0, 90, 35);                                                 

 segmentedControl.segmentedControlStyle=UISegmentedControlStyleBar;                            
 segmentedControl.momentary = YES;       
 UIBarButtonItem *segmentBarItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];        
 [segmentedControl release];       
 self.navigationItem.rightBarButtonItem = segmentBarItem;  
     [segmentBarItem release]; 
 } 

これは、バーに必要な数のボタンを追加する最良の方法です。お役に立てば幸いです。ありがとう :)

于 2012-04-10T16:38:09.837 に答える
0

これらのボタンを UIBarButtonItem に追加して、UIBarButtonItem を myNavItem に myNavItem.rightBarButtonItem = barButtonItem; のように追加してみてください。

于 2012-04-10T14:31:00.553 に答える