【问题标题】:Manage Multiple Uiviewcontroller without using Uinavigationcontroller在不使用 Uinavigationcontroller 的情况下管理多个 Uiviewcontroller
【发布时间】:2013-05-31 15:42:22
【问题描述】:

我正在制作一个 iPad 应用程序,它有许多具有非线性流程的视图控制器。起初我使用导航控制器,但一段时间后,管理堆栈变得困难(推送和弹出视图)。如果我只是在每次导航时推送视图,最终堆栈将变得太重而无法管理并且是不可取的。

所以每次我想进行导航时,我都会遇到一种替换 rootviewcontroller 的方法

这是它的代码

twoViewController *twoVC = [[twoViewController alloc] init] ;
[self.navigationController setViewControllers: [NSArray arrayWithObject: twoVC]  animated: YES];

我正在 Firstviewcontroller 中编写此代码。 twoViewController 是我想用 rootviewcontroller 替换的 viewcontroller。

问题:这是导航,但现在 twoViewController 完全变黑了。

请帮忙...

注意-我正在使用故事板

【问题讨论】:

  • 没有完全理解,但是导航控制器是使用viewControllers最简单的方法。你可以很容易地push到someController并弹出到特定的ViewController。
  • 实际上,在我的应用程序中,流程没有定义,即您可以从任何其他视图控制器转到任何视图控制器。这导致视图不断地推入堆栈,最终堆栈变得如此沉重,以至于应用程序无法管理。
  • 这就是我所说的,只推送那些不在堆栈中的视图。如果它在控制器堆栈中,则弹出到该视图。这会很容易。

标签: uinavigationcontroller


【解决方案1】:

如果您在弹出特定视图控制器时遇到问题,请使用以下方法搜索并弹出特定视图控制器。

-(IBAction)mainMenu:(id)sender
{
    for (int m=0; m<([self.navigationController.viewControllers count]); m++)
    {
        if ([[self.navigationController.viewControllers objectAtIndex:m] isKindOfClass:[MainMenuViewController class]]) {
            MainMenuViewController *mainMenu=[self.navigationController.viewControllers objectAtIndex:m];
            [self.navigationController popToViewController:mainMenu animated:YES];
        }
    }
}

【讨论】:

  • 这也可以使用,但在视图控制器少于 4 个的情况下。我的应用程序中至少有 9 个视图控制器,所以我必须实现你的方法,我需要先建立,比如说,72 segue 连接,以后无法管理。
  • 我的项目中也使用了这种方法,有 14 个视图控制器。我不认为这样会导致任何问题。
  • 无论如何,会试试这个。谢谢。虽然没有足够的声誉来支持。感谢您的帮助。
猜你喜欢
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多