相当于startactivity&在ios完成?

时间:2014-10-25 01:57:13

标签: ios iphone uiviewcontroller

我想替换viewcontroller(与startactivity& finish或window.location.replace相同)

如何替换viewcontroller而不是push?

1 个答案:

答案 0 :(得分:0)

根据您的视图控制器包含,有多种方法可以实现此目的。如果当前视图控制器位于UINavigationController堆栈的顶部,则下面是一个解决方案:

UINavigationController
  -- root view controller
  -- view controller 2
  -- view controller 3
  -- other view controllers in stack
  -- view controller n - 1
  -- view controller n

您想要将view controller n替换为另一个视图控制器(实例)。

view controller n的类中声明委托,设置view controller n - 1以符合该委托。当您按view controller n时,您将view controller n - 1设置为delegate

如果要替换view controller n,可以从中调用delegate方法,传递必要的参数来构造新的视图控制器。然后在view controller n - 1内,告诉UINavigationController弹出当前的顶视图控制器(view controller n)并推送新的视图控制器。

另一种解决方案是向UINavigationController发送通知以弹出并推送。

当您想要更改视图堆栈时,

UINavigationController有几个有用的方法:

  • setViewControllers(另一个有动画参数的人也可以使用)
  • popToViewController

不是很灵活,但只是一种方法。