0

ここに私の AppDelegate.m があります

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
    EventsMasterViewController *firstViewController = (EventsMasterViewController *)[[navigationController viewControllers] objectAtIndex:0];

    self.window.rootViewController = navigationController;
    [self.window makeKeyAndVisible];

    EventDataController *_myEventsDataController = [[EventDataController alloc] init];
    firstViewController.myEventsDataController = _myEventsDataController;

    EventDataController *_upcomingEventsDataController = [[EventDataController alloc] init];
    firstViewController.upcomingEventsDataController = _upcomingEventsDataController;

    EventDataController *_bookmarkedEventsDataController = [[EventDataController alloc] init];
    firstViewController.bookmarkedEventsDataController = _bookmarkedEventsDataController;

    return YES;
}

私の唯一のビューがMasterViewControllerとDetailViewControllerであり、Navigation Controllerに埋め込まれていたとき、これはうまく機能していました。

次に、TabBarController を追加します。そこで、NavigationController を TabBarController に組み込みました。しかし、私のデリゲートはエラーをスローしています。

示されているように、EventDataController の 3 つのインスタンスを初期化する必要があります。

したがって、「eventsDataControllers を firstViewController に追加できるように、プログラムで tabBarController から navigationController を取得するにはどうすればよいですか?」という質問になると思います。

アップデート

これが私のエラーです。setMyEventsDataController が UINavigationController のメソッドになる方法がわかりません。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setMyEventsDataController:]: unrecognized selector sent to instance
4

2 に答える 2

2

ウィンドウのUITabBarControllerrootViewController である必要があります。次に、各 をタブ バーUINavigationBarControllerの として追加します。contentView

于 2012-08-10T18:55:26.907 に答える
-1
EventsMasterViewController *firstViewController = (EventsMasterViewController *)[[navigationController viewControllers] objectAtIndex:0];

firstViewController を nav コントローラー自体に設定したためです。

于 2012-08-10T19:08:10.030 に答える