โดยใช้โปรแกรมเรียกปุ่มย้อนกลับของตัวควบคุมการนำทางบน iOS


85

ในแอพ iPhone ที่ใช้ UINavigationController ในวิธีการหนึ่งฉันต้องการดำเนินการที่เทียบเท่ากับโปรแกรมของปุ่มย้อนกลับที่กดและย้อนกลับไปดู

เช่นกดปุ่มงานโดยอัตโนมัติตามที่เห็นที่นี่:

รูปภาพตัวควบคุมการนำทาง

มีการโทร iOS ทั่วไปที่ฉันสามารถโทรได้หรือต้องการข้อมูลเพิ่มเติมหรือไม่?

คำตอบ:


189

UINavigationController's -popViewControllerAnimated:วิธีการควรจะทำสิ่งที่คุณต้องการ:

[navigationController popViewControllerAnimated:YES];

12
ยอดเยี่ยมขอบคุณ Steve และ Niels วิธีแก้ปัญหาที่ฉันใช้คือ [self.navigationController popViewControllerAnimate: YES]; ง่าย;)
oberbaum

วิธีนี้ใช้งานได้ดียกเว้น viewcontrollers ที่เพิ่มบน uitabbar เบาะแสใด ๆ ??
virata

1
ฉันเพิ่ม[self.navigationController popViewControllerAnimated:YES];แต่มันไม่ได้ทำอะไรเลยอย่างไรก็ตามมีการแจ้งเตือนเมื่อแตะปุ่มที่ใช้งาน
mohsin.mr

อืมฉันได้รับหน้าจอว่างเปล่าแอปที่ไม่ตอบสนองและสิ่งต่อไปนี้ในคอนโซล: "การเสร็จสิ้นการเปลี่ยนการนำทางในสถานะที่ไม่คาดคิดโครงสร้างมุมมองย่อยของแถบนำทางอาจเสียหาย"
Kurt

24

สมมติว่าคุณไม่ต้องการกดปุ่มโดยใช้โปรแกรม แต่เพียงแค่คัดลอกผลลัพธ์ของการกดปุ่มคุณควรบอกให้ตัวควบคุมการนำทางเปิดตัวควบคุมมุมมองปัจจุบัน

[self.navigationController popViewControllerAnimated:YES];

สิ่งนี้จะลบออกจากสแต็กและนำคุณกลับไปยังตัวควบคุมมุมมองก่อนหน้า


21

Swift 3.0

กลับไปที่มุมมองราก

self.navigationController?.popToRootViewController(animated: true)

กลับไปที่มุมมองก่อนหน้า

self.navigationController?.popViewController(animated: true)

Swift 2.3

กลับไปที่มุมมองราก

self.navigationController?.popToRootViewControllerAnimated(true)

กลับไปที่มุมมองก่อนหน้า

self.navigationController?.popViewControllerAnimated(true)


6
[self.navigationController popViewControllerAnimates:YES];

เป็นตัวเลือกที่ดีที่สุด แต่ถ้าคุณไม่ได้อยู่ในคลาสตัวควบคุมมุมมองเดียวกันหรือตัวแทนของคุณเปลี่ยนแปลงก่อนที่จะเรียกวิธีปุ่มย้อนกลับคุณสามารถลอง -

ก่อนอื่นคุณต้องกำหนดปุ่มย้อนกลับ -

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"anyTitleForBackButton" style: UIBarButtonItemStyleBordered target: nil action: @selector(backButtonTapped)];

[[self navigationItem] setBackBarButtonItem: newBackButton];

[newBackButton release];

จากนั้นในวิธี backButtonTapped คุณสามารถเรียก -

[self.navigationController pushViewController:desiredViewController animated:YES];
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.