2015-01-14 21 views
5

Tôi muốn loại bỏ 2 bộ điều khiển xem trong ios nhanh?làm thế nào để loại bỏ 2 bộ điều khiển xem trong ios nhanh chóng?

Dưới đây là mã của tôi.

@IBAction func backButtonTapped(sender: AnyObject) { 
     self.presentingViewController.presentingViewController.dismissViewControllerAnimated(true, completion: nil) 
} 
+0

Tôi hy vọng link này bạn giúp bạn http://stackoverflow.com/questions/24668818/how-to-dismiss-view-controller-in-swift – ErasmoOliveira

Trả lời

2

Bạn chỉ có thể loại bỏ một trình điều khiển chế độ xem cùng một lúc. Hãy thử điều này

@IBAction func backButtonTapped(sender: AnyObject) { 
     self.presentingViewController?.dismissViewControllerAnimated(true, completion: { 
      let secondPresentingVC = self.presentingViewController?.presentingViewController; 
      secondPresentingVC?.dismissViewControllerAnimated(true, completion: {}); 
     }); 
} 
9

Có đặc biệt Thư giãn segue cho mục đích đó, nó được thiết kế để quay trở lại để điều khiển quan điểm nào đó trong ngăn xếp.

Hãy gọi bộ điều khiển trên cùng (nơi bạn đi từ) như nguồn và bộ điều khiển trong ngăn xếp (mà bạn muốn quay trở lại đầu trang) như điểm đến.

  1. tạo IBAction trong điểm đến được kích hoạt trên segue Thư giãn:

    @IBAction func myUnwindAction(segue: UIStoryboardSegue) {}

nó thể để trống.

  1. trong nguồn điều khiển tạo ra một segue thư giãn bằng cách kéo từ biểu tượng điều khiển để thoát khỏi một, nó sẽ tìm thấy các hành động mà bạn đã tạo ở bước 1. Gọi segue unwind.

  2. bây giờ bạn có thể đưa ra rằng segue từ mã với thường xuyên

    performSegueWithIdentifier("unwind", sender: nil)

tôi đã mô tả làm thế nào để phát hành segue Thư giãn từ mã. Đối với các nút, bạn có thể tạo các phân đoạn tách biệt bằng IB bằng cách kéo nút để thoát khỏi biểu tượng.

Ngoài ra kiểm tra cuộc thảo luận này cho biết thêm: How to perform Unwind segue programmatically?

+0

Khi tôi làm điều này, tôi nhận được một lỗi thời gian chạy, "Người nhận không có segue với định danh" – peacetype

+1

Hướng dẫn này ở đây có thể trợ giúp: https://medium.com/@mimicatcodes/create-unwind-segues-i n-swift-3-8793f7d23c6f – Mattk90

6

phiên bản swift3 mới nhất Bạn có thể sa thải hai bộ điều khiển chế độ xem một trong sử dụng swift3 mã bên dưới này

func dismissTwoViews(){ 

self.presentingViewController?.presentingViewController?.dismiss(animated: true, completion: nil) 

} 
+1

Hm, mã này trông giống hệt như được đăng trong câu hỏi. Sự khác biệt sau đó là gì? Trong Swift2 nó loại bỏ chỉ một bộ điều khiển, trong khi trong Swift3 nó đóng cả hai? – Mixaz

Các vấn đề liên quan