0

UITabBarControllerに5つのUINavigationControllerのセットがあります。問題は、一部のUINavigationControllerのみがそれぞれのUITableViewControllerでviewWillAppear:を呼び出していることです。

私の現在の設定は次のとおりです:(すべてがプログラムで作成されます)

                        |
                tabBarController
              (UITabBarController)
                        |
        ---------------------------------------- ...etc...
        |                              |
tempNavController               tempNavController      <--- Secondary NavContr
(UINavigationController)      (UINavigationController)      Not subclassed
        |                              |
scheduleViewController        currentViewController
(UITableViewController)       (UITableViewController)
        |                              |
        ...more UITableViewControllers...

一部のUITableViewControllerのみがviewWillAppearとviewDidAppearを呼び出しており、呼び出しているUITableViewControllerは、ビューが表示される方法ごとに呼び出していません。ビューにプッシュしたときにのみ呼び出すもの、ビューにポップしたときにのみ呼び出すもの、タブをビューに切り替えたときにのみ呼び出すものがあります。

問題が一部のUITableViewControllerにのみ表示され、すべてでは表示されない原因は何でしょうか。そして、なぜビューが表示されるいくつかの方法でのみですか?すべてのタブとテーブルは同じ方法で設定されます。

編集:タブを設定するために使用するコードは次のとおりです。

- (void)viewDidLoad
{
    //Setup of two of the tabs
    //Create navigation controller and root view for each tab
    //Current Comps
    CurrentCompsViewController *tempCurrentCompsViewController = [[CurrentCompsViewController alloc] init];
    [tempCurrentCompsViewController setAProgram:self.currentProgram];
    self.currentCompsviewcontroller = [[UINavigationController alloc] initWithRootViewController:tempCurrentCompsViewController];

    //Comp List
    CompetitionListViewController *tempCompListViewController = [[CompetitionListViewController alloc] init];
    [tempCompListViewController setAProgram:self.currentProgram];
    self.competitionListViewController = [[UINavigationController alloc] initWithRootViewController:tempCompListViewController];

     //Create and add tabBarItems
    UITabBarItem *compListITem = [[UITabBarItem alloc] initWithTitle:@"Competitions" image:[UIImage imageNamed:@"CompsIcon.png"] tag:6];
    [self.competitionListViewController setTabBarItem:compListITem];

    UITabBarItem *curentItem = [[UITabBarItem alloc] initWithTitle:@"Current Comps." image:[UIImage imageNamed:@"CurrentIcon.png"] tag:7];
    [self.currentCompsviewcontroller setTabBarItem:curentItem];

    //Add everything to tab array, and sort tabs... etc...
}

タブビューでアイテムを選択することとは何の関係もありません。また、各タブのルートにあるナビゲーションコントローラーをサブクラス化しません。

4

2 に答える 2

0

各UINavigationControllerのデリゲートを手動で設定してみてください。

元:

tempNavController.delegate = self;
于 2012-07-08T00:28:50.333 に答える
0

viewWillAppear:、viewDidLoad、viewDidAppear:で「[superviewWillAppear:animated]」を呼び出すのを忘れたことがわかりました。可能な場合は、常にスーパークラスにコールバックしてください。

于 2012-10-03T02:24:54.267 に答える