Bre*_*ett 29 iphone objective-c
我有一个iPhone应用程序,它使用UINavigationController
应用程序导航的标准实现.
我试图找出一种方法来替换层次结构中的视图控制器.换句话说,我的应用程序加载到一个rootViewController
用户按下按钮时,应用程序将推送到firstViewController
.然后用户按下另一个按钮以将应用程序导航到secondViewController
.再次使用导航到另一个视图控制器,thirdViewController.但是,我希望它的BackButton thirdViewController
弹回到firstViewController.
基本上,当用户推送时thirdViewController
,我希望它secondViewController
在导航层次结构中替换.
这可能吗?我知道它正在使用Three20,但我不是在这种情况下.尽管如此,如果它可以在Three20中使用,那么肯定应该使用直接的SDK调用.有人有想法吗?
干杯,布雷特
Eca*_*ion 54
非常简单,当要推送第三个ViewController而不是简单地pushViewController
执行此操作时:
NSArray * viewControllers = [self.navigationController viewControllers];
NSArray * newViewControllers = [NSArray arrayWithObjects:[viewControllers objectAtIndex:0], [viewControllers objectAtIndex:1], thirdController,nil];
[self.navigationController setViewControllers:newViewControllers];
Run Code Online (Sandbox Code Playgroud)
其中,[viewControllers objectAtIndex:0]
和[viewControllers objectAtIndex:1]
是你的RootViewController的和你FirstViewController.
Jus*_*Sid 23
NSMutableArray *viewController = [NSMutableArray arrayWithArray:[navController viewControllers]];
[viewController replaceObjectAtIndex:1 withObject:replacementController];
[navController setViewControllers:viewController];
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅UINavigationController类参考.
dua*_*uan 10
Swift中更干净的方式应该是:
extension UINavigationController {
func replaceTopViewController(with viewController: UIViewController, animated: Bool) {
var vcs = viewControllers
vcs[vcs.count - 1] = viewController
setViewControllers(vcs, animated: animated)
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25197 次 |
最近记录: |