2012-06-18 13 views
28

Tôi muốn biết sự khác biệt của chúng là gì. khi tôi có thể gọidismissViewControllerAnimated VS popViewControllerAnimated

[self dismissViewControllerAnimated:YES completion:nil]; 

và khi tôi nên gọi

[self.navigationController popViewControllerAnimated:YES]; 

tài liệu theo của táo: dismissViewControllerAnimated nghĩa "bác bỏ các điều khiển quan điểm cho rằng đã được trình bày bởi người nhận." Nhưng tôi luôn không loại bỏ bộ điều khiển xem bằng phương pháp này.

+0

Để được miễn nhiệm, hãy xem [this] (https://youtu.be/oTsg-uJfxD4?t=556) video từ Stanford. dismissViewController luôn luôn phải được gửi đến * presenting * viewController. Nếu bạn gửi nó * xem * trình bàyController và presentationViewcontroller đã không trình bày ** a ** nother viewController * sau đó * nó sẽ bỏ nó đúng cách nếu không nó sẽ không làm điều đó ngay – Honey

Trả lời

38

ứng dụng được chọn của bạn được chuyển hướng ứng dụng dựa nghĩa

[self.navigationController popViewControllerAnimated:YES]; 

ứng dụng được chọn của bạn là khác so với ứng dụng dựa navigation nghĩa

[self dismissViewControllerAnimated:YES completion:nil]; 
+0

do đó, nó có nghĩa là: Tôi không nên sử dụng dismissViewControllerAnimated trong một ứng dụng dựa trên điều hướng? Tôi nghĩ rằng đó là lý do tại sao tôi luôn luôn không bỏ quaViewControllerAnimated, cảm ơn bạn! –

36

-dismissViewControllerAnimated: hoàn thành:

Được sử dụng để loại bỏ một số UIViewController, được trình bày theo phương pháp:

-presentViewController:animated:completion:.

-popViewControllerAnimated:

Phương pháp UINavigationController được sử dụng để bật một bộ điều khiển thể hiện bởi

-pushViewController:animated phương pháp UINavigationController.

Trong trường hợp đầu tiên, chế độ xem của bộ điều khiển xem là bộ điều khiển phương thức (thường từ dưới lên trên) và trường hợp thứ hai bạn đang đẩy bộ điều khiển chế độ xem trong ngăn điều hướng UINavigationController.