0

私のバグは次のとおりです。

ViewList には、ViewManager をプッシュする以下のコードがあります。

- (Void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath
{
     PropertyManagerViewController propertyManagerViewController * = [[PropertyManagerViewController alloc] initWithNibName: @ "PropertyManagerViewController" bundle: nil];
     [self.navigationController pushViewController: propertyManagerViewController animated: YES];

}

ViewManager で UITabBarController を作成します。

- (void) createTabBarController
{
       [ ShowTabBarController showTabBar : self.navigationController.tabBarController ] ;

        NSMutableArray * viewControllers = [ [ NSMutableArray alloc ] init ] ;
         UITabBarController * TabBarController = [ [ UITabBarController alloc ] init ] ;

        ViewController * viewController = [ [ ViewController alloc ] initWithNibName : @ " ViewController " bundle: nil ] ;
         UINavigationController * navigationController = [ [ UINavigationController alloc ] initWithRootViewController : ViewController ] ;
         [ ViewControllers addObject : navigationController ] ;

        ViewController2 viewController2 * = [ [ VisitDetailsViewController alloc ] initWithNibName : @ " ViewController2 " bundle: nil ] ;
         UINavigationController * navigationController2 = [ [ UINavigationController alloc ] initWithRootViewController : ViewController2 ] ;
         [ ViewControllers addObject : navigationController2 ] ;

         tabBarController.viewControllers = viewControllers ;
         self.navigationController.tabBarController.viewControllers = tabBarController.viewControllers ;

} .

ViewController と ViewViewController2 には、ViewList をプッシュするこのメソッドがあります。

-(void)pushTableList
{
    [ShowTabBarController hideTabBar:self.tabBarController];

    PropertyListViewController *propertyList = [[PropertyListViewController alloc] initWithNibName:@"PropertyListViewController" bundle:nil];    

[UIView beginAnimations:nil context:NULL];

    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:0.75];
    [self.navigationController pushViewController:propertyList animated:NO];
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.navigationController.view cache:NO];

    [UIView commitAnimations];
}

私の問題は今です:

  • ViewController2 pushTableList にいるとき、viewlist に移動します。
  • 次に、別の行を選択し、push ViewManager を実行すると、最後に表示されたビュー (この場合は ViewController2) が表示されます。

アップデート :

テーブル セルをクリックしてから、ViewController をプッシュします。問題は、セルをクリックすると、ViewList にプッシュすると、ビューに ViewContoller 2 (これが最後のビュー) が表示されることです。

新しいアップデート

1 - UITabBArController をプッシュして作成する

-(Void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath
{
    PropertyManagerViewController propertyManagerViewController * = [[PropertyManagerViewController alloc] initWithNibName: @ "PropertyManagerViewController" bundle: nil];
    [self.navigationController pushViewController: propertyManagerViewController animated: YES];

}
- (void) createTabBarController
{
    [ ShowTabBarController showTabBar : self.navigationController.tabBarController ] ;

    NSMutableArray * viewControllers = [ [ NSMutableArray alloc ] init ] ;
    UITabBarController * TabBarController = [ [ UITabBarController alloc ] init ] ;

    ViewController * viewController = [ [ ViewController alloc ] initWithNibName : @ " ViewController " bundle: nil ] ;
    UINavigationController * navigationController = [ [ UINavigationController alloc ] initWithRootViewController : ViewController ] ;
    [ ViewControllers addObject : navigationController ] ;

    ViewController2 viewController2 * = [ [ VisitDetailsViewController alloc ] initWithNibName : @ " ViewController2 " bundle: nil ] ;
    UINavigationController * navigationController2 = [ [ UINavigationController alloc ] initWithRootViewController : ViewController2 ] ;
    [ ViewControllers addObject : navigationController2 ] ;
    ViewController3 viewController3 * = [ [ VisitDetailsViewController alloc ] initWithNibName : @ " ViewController3 " bundle: nil ] ;
    UINavigationController * navigationController3 = [ [ UINavigationController alloc ] initWithRootViewController : ViewController2 ] ;
    [ ViewControllers addObject : navigationController3 ] ;

    tabBarController.viewControllers = viewControllers ;
    self.navigationController.tabBarController.viewControllers = tabBarController.viewControllers ;

}

ここに画像の説明を入力

2 - TabBarITem Visit Details を選択し、UIBarButtonItem Property List をクリックします。

ここに画像の説明を入力

3 - データ テーブルのセルをクリックします。

ここに画像の説明を入力

4 - これが私の問題です。tabbaritem に戻る場合は、アクセスしてください。PropertyItem を見せてほしい ここに画像の説明を入力

4

1 に答える 1

1

このドキュメントをチェックアウトすることをお勧めします: https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/AboutViewControllers/AboutViewControllers.html

1 つの非常に重要な情報: UITabBarController は常にトップレベルのコントローラーでなければなりません! UINavigationController 内に UITabBarController を配置することはできません。ただし、UITabBarController 内に UINavigationController を配置することはできます。UINavigationControllerのpushViewController:animated: メソッドに関するApple ドキュメントには、次のように書かれています。

スタックにプッシュされるビュー コントローラー。このオブジェクトは、タブ バー コントローラーのインスタンスにすることはできません。また、ナビゲーション スタック上にまだ存在していてはなりません。

これがあなたを正しい方向に導くことを願っています。

于 2013-10-18T20:05:21.237 に答える