2

次のようにして UITableView にボタンを追加しています

 // Add checkOut button
    UIView      *viewHolder =   [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 165)];
    UIButton    *checkOut   =   [UIButton buttonWithType:UIButtonTypeRoundedRect];
    CGRect      buttonRect  =   CGRectMake((self.view.frame.size.width - 220.)/2, 30, 220., 44.);

    [checkOut setTitle:@"Check out" forState:UIControlStateNormal];
    [checkOut addTarget:self action:@selector(goToCheckOut) forControlEvents:UIControlEventTouchUpInside];
    [checkOut setFrame:buttonRect];
    [viewHolder addSubview:checkOut];
    self.shoppingListTable.tableFooterView  =   viewHolder;

goToCheckOut は次のことを行います。

#pragma mark - goToCheckOut
- (void)goToCheckOut {
    NSLog(@"goToCheckOut");
    AnotherViewController  *controller =   [[AnotherViewController alloc] initWithNibName:@"AnotherViewController" bundle:nil];
    [self.navigationController pushViewController:controller animated:YES];
}

ボタンをクリックすると、ログが表示されます

goToCheckOut

しかし、別のView Controllerに移動していません。

理由を知っている体はありますか?助けてください。ありがとう


@pgb:あなたはそれについて何らかの方法で儀式を行っています。タブバーの uiviewcontroller は自分のビューコントローラーです...しかし、私は uitabbarviewcontroller を持っていません。代わりに、私はそれを持ってuiviewcontrolleruitabarます。

#pragma mark - TabBarDelegate
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
    // firstViewController section
    if ( item.tag == 0 ) {
        [self.firstViewController.view removeFromSuperview];
        [self.secondViewControoler.view   removeFromSuperview];
        self.title   =   @"First View Controller";
        [self.view insertSubview:self.firstViewController.view belowSubview:taBar];
    }
    // secondViewController section
    else if (item.tag == 1){
        [self.firstViewController.view removeFromSuperview];
        [self.secondViewControoler.view   removeFromSuperview];
        self.title    =   @"Second View Controller";
        frame.origin.x      =   [self horizontalCoordinateAt:item.tag + 2];
        [self.view insertSubview:self.secondViewControoler.view belowSubview:taBar];
    }

}

私が今持っている現在の構造は

UIViewController0 ( it is also a navigationController)
  UIViewController1
  UIViewController2
    UITabBar
      FirstViewController
      SecondViewController

First と SecondViewController で pushViewController を実行できるように変更する方法。

4

2 に答える 2

1

あなたの説明に基づいてUIViewController、タブ ビュー コントローラーで設定しているのは独自のビュー コントローラーであり、UINavigationController.

階層は次のようにする必要があります。

UITabViewController
   UINavigationController
     YourCustomViewController
   UINavigationController
     OtherCustomViewController

代わりに、次の階層があると思います。

UITabViewController
   YourCustomViewController
   OtherCustomViewController

self.navigationControllernilを作成している可能性があるため、そうではないかもしれませんがUINavigationController、タブ ビュー コントローラーによって処理されるビュー コントローラーとして、navigationController を設定できていない可能性があります。

于 2012-06-19T20:23:26.193 に答える
0

私はこの問題に対する自分自身の解決策を見つけました。私がしたことは:

1. Create a delegate with a callback method in each FirstViewController and SecondViewController
2. Make UIViewController2 conform delegate of first and second view controller
3. Implement the method in delegate ( a call back ) such as pushViewController....
于 2012-06-20T00:55:52.783 に答える