【问题标题】:How to transition from one controller 1 to controller 2, and then have controller 2 immediately push another controller?如何从一个控制器 1 过渡到控制器 2,然后让控制器 2 立即推动另一个控制器?
【发布时间】:2013-09-22 17:48:48
【问题描述】:

我有一个MenuViewController 和一个UINavigationController 位于ViewDeck 中,这是一个侧边菜单框架。您只需像这样启动:

ListingViewController* lvc = [[ListingViewController alloc] init]; 
UINavigationController* homeNavStack = [[UINavigationController alloc] initWithRootViewController:lvc];
MenuViewController* sideMenu = [[MenuViewController alloc] init]; 
IIViewDeckController* slideController = [[IIViewDeckController alloc] initWithCenterViewController:homeNavStack leftViewController:sideMenu];

其中中心视图控制器是我的导航控制器,而菜单视图控制器隐藏在左侧,必须向左滑动才能使其可见(类似于 facebook 的侧边菜单)。

侧面菜单中有一个按钮,按下该按钮时,需要将应用程序转换回导航控制器,并让它推送一个新的视图控制器。这是我的代码,在MenuViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    if(indexPath.row == 0){
        NSLog(@"check"); 
        UserProfileViewController* userProfile = [[UserProfileViewController alloc] init];
        [self.viewDeckController toggleLeftViewAnimated:YES];
        [self.centerViewController pushViewController:userProfile animated:YES]; 
    }
}

toggleLeftViewAnimated 带回中心视图控制器,再次隐藏侧边菜单。我给了侧边菜单一个对中心视图控制器的引用,并使用它,我要求它推送一个新的视图控制器。但是,当调用此方法时,中心视图控制器返回视图后没有任何反应。有谁知道为什么这不起作用?

【问题讨论】:

    标签: iphone ios objective-c


    【解决方案1】:

    检查 self.centerViewController 是否是您添加为中心视图控制器的导航控制器实例。您需要获取已添加到 IIViewDeckController 中的 Navigation Controller 实例,现在您正在使用 self(可能是 MenuViewController)。我认为您需要编写一个方法来从 IIViewDeckController 获取导航控制器,然后推送您的 userProfile 将完美运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-26
      • 2015-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-07
      • 2018-06-28
      相关资源
      最近更新 更多