1

これらの2行のコードに違いはありますか?

self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:1];

self.tabBarController.selectedIndex = 1;

私のアプリはトップステートメントでクラッシュしたため、メモリの問題が発生している可能性があります。ある方法が他の方法よりも優れている点はありますか?

4

1 に答える 1

0

実際には、selectedIndexプロパティを設定すると、最初のステートメントと同様のことが行われますが、おそらくさらにチェックが行われます。tabBarに5つを超えるコントローラーがある場合は違いがあります。したがって、[その他]タブがある場合は違いがあります。これは、ドキュメントに記載されていることです。

--selectedIndex _

このプロパティは、名目上、viewControllersプロパティの配列へのインデックスを表します。ただし、選択したViewControllerが現在MoreNavigation Controllerである場合、このプロパティには値NSNotFoundが含まれます。このプロパティを設定すると、選択したViewControllerがviewControllers配列の指定されたインデックスにあるものに変更されます。Moreナビゲーションコントローラー自体を選択するには、代わりにselectedViewControllerプロパティの値を変更する必要があります。

バージョン3.0より前のバージョンのiPhoneOSでは、このプロパティは選択したタブバーアイテムのインデックスのみを反映します。この値を、タブバーに表示されていないが、代わりにMoreナビゲーションコントローラーによって管理されているViewControllerのインデックスに設定しようとしても効果はありません。

于 2009-09-26T17:46:01.630 に答える