2012-04-23 6 views
10

Tôi không biết tại sao dismissViewControllerAnimated:completion:. Tôi chỉ muốn làm điều đó.Làm thế nào loại bỏ một viewController với storyboard từ một segue push?

Tôi bắt đầu với một

[self performSegueWithIdentifier:@"my_segue" sender:self]; 

Nhưng tôi gọi là sa thải hơn có gì xảy ra. Tôi có thể tạo ra một khoảng cách khác, nhưng nó tạo ra một bộ điều khiển xem mới.

Câu hỏi của tôi là: Cách loại bỏ performSegueWithIdentifier:sender:?

Trả lời

0

[my_segue_view_controller dismissModalViewControllerAnimated: YES]?

(không chắc chắn, nhưng nó hoạt động trên thực tế của tôi)

+3

Bạn nên tránh sử dụng 'dismissModalViewControllerAnimated:', như [tài liệu] (http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html) nói rằng đó là không được chấp nhận. 'dismissViewControllerAnimated: completion:' nên được sử dụng thay thế. –

0

performSegueWithIdentifier:sender: thân chúng không thể bị sa thải, đó chỉ là phương pháp đó được gọi là để bắt đầu một segue đặt tên. Điều gì xảy ra trong segue là quan tâm nhiều hơn.

Bạn nói đúng mà bạn nên gọi dismissViewControllerAnimated:completion:, và nó nên được gọi bởi các trình bày điều khiển xem, mà trước đó đã kêu gọi các giới điều khiển xem sử dụng presentViewController:animated:completion:. Để biết thêm thông tin, hãy xem the UIViewcontroller docs.

31

Bạn có Navigationbar trong viewController đó đang gọi:

[self performSegueWithIdentifier:@"my_segue" sender:self]; 

Nếu vậy, bạn sẽ cần phải sử dụng:

[self.navigationController popViewControllerAnimated:YES]; 

để bật quan điểm ra khỏi stack. Có một cuộc gọi segue, nhưng khuôn khổ dường như gọi:

presentViewController:animated:completion: 

hay:

pushViewController:animated: 

cho phù hợp.

Ray

+0

Tôi đã cố gắng kết hợp khác nhau tập trung xung quanh dismissViewController .... không ai trong số họ làm việc. Chúc mừng tôi đã tìm thấy và đã thử, đề xuất của bạn về 'popViewController' thay thế. Không chắc chắn nếu điều này là đúng, nhưng tôi chắc chắn có thể thấy một mối quan hệ có thể có giữa một PUSH segue và sự cần thiết cho một POP đối ứng để có được nó ra khỏi ngăn xếp. – BonanzaDriver

2

Bạn chỉ có thể gọi

[self dismissViewControllerAnimated:YES completion:nil]; 

từ bộ điều khiển xem kể từ khi điều khiển xem được đẩy bởi segue.