2

多くのuitableviewcontrollersとuiviewcontrollersをネストするタブバーアプリケーションがあるとしましょう。特定のコントローラーのハンドルを取得するために使用するコード行は何ですか?

たとえば、現在タブバーコントローラーの3番目のタブであるuitableviewcontrollerを取得したいとします。私は次のコードを持つMyObject.h/mファイルにいます:

MyObject.h

#import <Foundation/Foundation.h>
#import "MyAppDelegate.h"

@interface MyObject : NSObject

-(void) myfunction;

@end

MyObject.m

#import "MyObject.h"

@implementation MyObject



-(void) myfunction  {

    UITableViewController * mytvc = /*Some line of code*/;

}
@end

/*Some line of code*/mytvcが、関心のあるuitableviewcontrollerを指す変数になるように、何に置き換えますか?

XCode4.2を使用しています。各uiviewcontrollerを説明するストーリーボードがあります。タブバービューコントローラは、xcodeが私のために最初に作ったものでした。それで、それはアプリのトップだと思いますか?

4

2 に答える 2

1

rootViewController.tabBarController.viewControllers各タブのルート ビュー コントローラーの配列です。またはを設定することで、アクティブなView Controllerを設定tabBarController.selectedViewControllerできtabBarController.selectedIndexます。

アプリデリゲートからはself.window.rootViewController.tabBarController. ビューコントローラーからはself.view.window.rootViewController.tabBarController.

[[self.view.window.rootViewController.tabBarController.viewControllers objectAtIndex:2] myFunction]別のView Controllerから関数にアクセスします。これは、3 番目のタブがナビゲーション コントローラーではないことを前提としています。

タブにナビゲーション コントローラーがある場合は、その上にナビゲーション コントローラーの構文を追加する必要があります。[[[self.view.window.rootViewController.tabBarController.viewControllers objectAtIndex:2] navigationController].visibleViewController myFunction]フルパスになります。今見ると、ちょっとばかげているように思えます。

于 2012-05-17T03:06:58.427 に答える
1

それがルート ビュー コントローラーであり、アプリ デリゲートにアクセスできる場合は、次のようにコントローラーにアクセスできるはずです。

appDelegate.window.rootViewController
于 2012-05-17T00:38:38.043 に答える