Theo tài liệu iOS, chuỗi trả lời được sử dụng để truyền các sự kiện chạm "lên chuỗi". Nó cũng được sử dụng cho các hành động được tạo ra bởi các điều khiển. Khỏe.Đi bộ chuỗi trả lời để chuyển các sự kiện tùy chỉnh. Điều này có sai không?
Điều tôi thực sự muốn làm là gửi sự kiện tùy chỉnh "lên chuỗi". Người trả lời đầu tiên để nhận sự kiện sẽ xử lý nó. Điều này có vẻ giống như một mô hình khá phổ biến, nhưng tôi không thể tìm thấy bất kỳ lời giải thích tốt về cách làm điều đó "iOS/Cocoa cách".
Kể từ khi chuỗi trả lời chính xác là những gì tôi cần, tôi đã đưa ra một giải pháp như thế này:
// some event happened in my view that
// I want to turn into a custom event and pass it "up":
UIResponder *responder = [self nextResponder];
while (responder) {
if ([responder conformsToProtocol:@protocol(ItemSelectedDelegate)]) {
[responder itemSelected:someItem];
break;
}
responder = [responder nextResponder];
}
này hoạt động hoàn hảo, nhưng tôi có một cảm giác rằng cần có cách khác để xử lý này. Đi theo chuỗi bằng tay theo cách này dường như không ... rất đẹp.
Lưu ý rằng thông báo không phải là giải pháp tốt ở đây, vì tôi chỉ muốn các đối tượng trong cấu trúc phân cấp xem có liên quan và thông báo là toàn cầu.
Cách tốt nhất để xử lý điều này trong iOS (và Cocoa cho vấn đề đó) là gì?
EDIT:
Tôi muốn đạt được điều gì?
Tôi có một bộ điều khiển chế độ xem, trong đó có chế độ xem, trong đó có các bản xem trước vv ... Một số xem phụ thuộc loại cụ thể hiển thị một mục từ cơ sở dữ liệu. Khi người dùng chạm vào chế độ xem này, tín hiệu sẽ được gửi tới bộ điều khiển để điều hướng đến trang chi tiết của mục này.
Chế độ xem xử lý thao tác nhấn là một vài cấp bên dưới chế độ xem chính trong cấu trúc phân cấp chế độ xem. Tôi phải nói với bộ điều khiển (hoặc trong một số trường hợp một subview cụ thể "lên chuỗi") rằng một mục đã được chọn.
Lắng nghe thông báo sẽ là một tùy chọn, nhưng tôi không thích giải pháp đó vì chọn mục không phải là sự kiện toàn cầu. Nó được gắn chặt với bộ điều khiển xem hiện tại.
"... Tôi có cảm giác rằng có những cách khác để xử lý việc này ..." Có thể có, nhưng thật khó để nói mà không biết chính xác lý do bạn muốn chuyển sự kiện tùy chỉnh lên chuỗi. Mục tiêu cuối cùng của bạn là gì? –
Xem phần giải thích đã thêm của tôi trong câu hỏi. –
Re câu hỏi năm tuổi này ... đây là cách Swift hiện đại đẹp để làm một số nhiệm vụ như thế này http://stackoverflow.com/a/37515358/294884 – Fattie