2

以下是相关的代码行:...

       if([top class] == [SitesViewController class]){
                            BackupsViewController *backup = [[BackupsViewController alloc] initWithStyle:UITableViewStyleGrouped andID:cg_id];
                            [websites pushViewController:backup animated:NO];
                            [websites pushViewController:details_controller animated:YES];

网站是一个导航控制器,它不是零。

现在我第一次运行它,它工作正常。但是,如果我退出,然后重新登录,它就不起作用了。事实上,什么也没有发生。它保持在它所在的同一页面上。我已经检查过以确保没有什么是零。我也知道我正在进入这个 if 语句,而不是其他人。

这是注销功能:

  AppDelegate * appDelegate = (GCAppDelegate*)[[UIApplication sharedApplication] delegate];
 [appDelegate.tabBarController setSelectedIndex:0]
UINavigationController * topViewController = appDelegate.tabBarController.viewControllers[0];
[topViewController presentViewController:loginScreen animated:YES completion:nil];
[topViewController popToRootViewControllerAnimated:TRUE];
[self deteleKeysAndTokens: (NSString*)k_apiSecret withAccessToken: (NSString*)k_accessToken withAccessSecret:(NSString*) k_accessSecret withkAPIKey: (NSString*)k_apiKey];

万一它可能有帮助,backupViewController 正在下载网站列表,而 detailsViewController 正在获取有关网站的信息。事实上,在拨打电话后:

 [websites pushViewController:backup animated:NO];
 [websites pushViewController:details_controller    
  animated:YES];

(这是我发布的第一段代码。)我检查一下 topViewController 是什么:

      UIViewController * topView = websites.topViewController;

topViewController 是 details_controller。所以我知道它正在被推入堆栈。然而,什么都没有发生。我的观点与我开始时的观点相同。我在想也许是因为我没有得到所有的数据。但这并不能解释(a)为什么它第一次工作以及(b)为什么它不显示空白页。

4

1 回答 1

0

很难说什么是错误的,因为从代码中不清楚什么是视图层次结构。

首先确保您使用的是正确的导航控制器:

UINavigationController * websites = viewController.navigationController;
[websites pushViewController:anotherViewController animated:NO];

另外我不确定为什么您的注销功能如此复杂。你在哪里执行它?无论如何,在导航控制器上呈现视图控制器然后将其弹出到根目录是不好的。而且他们俩都是动画...

请提供更多代码。

于 2013-07-23T21:18:13.170 回答