Có ai biết biểu tượng Thoát mới được sử dụng để làm gì khi chỉnh sửa bảng phân cảnh bằng Xcode 4.5 không?


100

Nhấp chuột phải vào biểu tượng Thoát sẽ tạo ra một cửa sổ trống. Không thể Ctrl-kéo kết nối đến bất kỳ phần tử IB nào hoặc tệp nguồn tương ứng. Tài liệu không có tình yêu. Không xuất hiện trong tệp nib, chỉ có bảng phân cảnh. Giả định của tôi là đó là một hệ quả để tìm kiếm, nhưng tôi không thấy bất kỳ phương pháp mới nào để sao lưu nó. Bất kỳ ai?



Có thể trùng lặp của Xcode 4.5 Storyboard 'Thoát'
Tamás Sengel

Câu trả lời:


104

Có rất nhiều thông tin trong video WWDC "Phiên 407 - Áp dụng Bảng phân cảnh trong ứng dụng của bạn."

Giả sử bạn có hai bộ điều khiển chế độ xem được liên kết bởi một segue. Thực hiện hành động thoát sau trên bộ điều khiển chế độ xem đầu tiên:

- (IBAction)done:(UIStoryboardSegue *)segue {
    NSLog(@"Popping back to this view controller!");
    // reset UI elements etc here
}

Sau đó, trên cảnh Storyboard cho bộ điều khiển chế độ xem thứ hai, Ctrl-kéo từ một phần tử giao diện người dùng, chẳng hạn như nút, đến biểu tượng thoát ở cuối bộ điều khiển chế độ xem này. Các done:hành động mà bạn thêm vào đoạn code của bộ điều khiển đầu tiên sẽ xuất hiện như là một lựa chọn. Bây giờ, kích hoạt nút bạn kéo Ctrl đến biểu tượng thoát sẽ bật trở lại bộ điều khiển chế độ xem đầu tiên và duy trì trạng thái ban đầu của nó (nghĩa là các phần tử giao diện người dùng như nhập văn bản được cho là vẫn còn nguyên vẹn).


3
Nó thực sự mở ngược trở lại cùng một phiên bản của bộ điều khiển chế độ xem (và các chế độ xem của nó).
Jon Hess

Cảm ơn, tôi đang đọc bài này chỉ để tìm hiểu nội dung của "Lối ra xanh", chỉ để tìm hiểu xem nó giải quyết vấn đề cho tôi. Tôi có 2 bộ điều khiển chế độ xem được phân tách bằng bộ điều khiển TabBar và bộ điều khiển điều hướng và "Cửa sổ bật" không hoạt động để quay trở lại. Quá trình này mất 2 phút và mọi thứ hoạt động như bạn đã nói! CẢM ƠN!
user589642 25/12/12

Làm thế nào tôi có thể gọi phương thức hành động trên Donenút trong lớp của chế độ xem B trước khi thoát trở lại chế độ xem A?
chuyên gia

Nếu bạn xem video WWDC bạn có thể bỏ qua để 37:15 để xem phần về "segues Thư giãn"
moliveira

220

Tôi đã gặp khó khăn khi làm theo câu trả lời được chấp nhận vì vậy đây là chi tiết hơn.

Với hình ảnh bên dưới trên bộ điều khiển chế độ xem C, bạn có thể "thoát" trở lại bất kỳ bộ điều khiển chế độ xem nào trong đường dẫn xác định.

nhập mô tả hình ảnh ở đây

ViewController A bạn có thể viết:

- (IBAction)done:(UIStoryboardSegue *)segue {
    // Optional place to read data from closing controller
}

ViewController B bạn có thể viết:

- (IBAction)back:(UIStoryboardSegue *)segue {
    // Optional place to read data from closing controller
}

ViewController C bạn điều khiển kéo từ nút "quay lại" đến tùy chọn thoát màu xanh lá cây và chọn trở lại: ViewController C bạn điều khiển kéo từ nút "hoàn thành" đến tùy chọn thoát màu xanh lá cây và chọn hoàn tất: nhập mô tả hình ảnh ở đây

Lưu ý: Mặc dù các phương thức nằm trên các bộ điều khiển chế độ xem khác, chúng vẫn hiển thị cho lối ra của ViewController C. Điều khiển kéo và chọn một phương thức xác định ViewController nào sẽ rút lui.


2
Một lưu ý nữa: đôi khi nút thoát màu xanh lá cây không hoạt động ngay cả khi tất cả các bước đã được thực hiện. Trong trường hợp này, việc mở lại bảng phân cảnh (hoặc dự án xcode) sẽ làm cho nó hoạt động như mong đợi.
zxcat,

3
Một vấn đề khác mà tôi gặp phải là tôi đã không đặt chữ ký phương thức segue unwind trong tệp .h hoặc phần mở rộng lớp của mình. Sau khi tôi thêm nó, segue thư giãn xuất hiện trong cửa sổ bật lên.
Steve Moser

2
+ Vô cực choEven though the methods are on other view controllers they show up for the ViewController C's exit.
Ông già Noel vào

15

Ngoài câu trả lời của Eric, đây là cách nó hoạt động với:

Chức năng bạn thêm vào bộ điều khiển đích trông giống như sau:

@IBAction func backFromOtherController(segue: UIStoryboardSegue) {
    NSLog("I'm back from other controller!")
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.