用另一个视图更改视图控制器控制器快速

时间:2016-03-11 09:54:23

标签: ios swift uinavigationcontroller push

假设我有名为A,B,C,D的视图控制器。我正在使用push来自A - > B - > C.现在我想从C转到D,当我从D按回按钮时,它应该转到A.我怎么能这样做?有什么建议?

3 个答案:

答案 0 :(得分:1)

如果你想要弹出到根(A),例如D - > A(直接)

 self.navigationController?.popToRootViewControllerAnimated(true)

如果您想返回上一个视图控制器,例如:D - > C或c - > B或B到A

 self.navigationController?.popViewControllerAnimated(true)

答案 1 :(得分:1)

您需要使用自定义按钮修改后退按钮,并添加一个操作,将您弹出到当前UINavigationController内的 rootViewController 。 ( popToRootViewController 表示从导航堆栈中删除所有其他控制器并转到第一个控制器)

在你的最后一个viewController上放了这些行:

目标C

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Go to root" style:UIBarButtonItemStylePlain target:self action:@selector(popToRootNavigationViewController:)];
}

- (void)popToRootNavigationViewController:(UIBarButtonItem *)button {
    [self.navigationController popToRootViewControllerAnimated:YES];
}

夫特

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Go to root", style: UIBarButtonItemStyle.Plain, target: self, action: "popToRootNavigationViewController:")
}

func popToRootNavigationViewController(sender: UIBarButtonItem) {
    self.navigationController?.popToRootViewControllerAnimated(true)
}

答案 2 :(得分:0)

使用UINavigationController,您可以拨打popToRootViewControllerAnimated(_:),它会将您带回到您的第一个控制器。

因此,使用NavController,将A设置为root,将D设置为popToRootViewControllerAnimated(true)

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationController_Class/#//apple_ref/occ/instm/UINavigationController/popToRootViewControllerAnimated