我想替换viewcontroller(与startactivity& finish或window.location.replace相同)
如何替换viewcontroller而不是push?
答案 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
不是很灵活,但只是一种方法。