2017-03-14 16 views
7

Khi nào tôi nên làm việc với Hành động mục tiêu và nil? Mặt khác, khi nào tôi nên làm việc với Hành động và Mục tiêu nil và khi nào tôi nên làm việc với cả Hành động và Mục tiêu?Sự khác biệt giữa Mục tiêu và Hành động nhanh chóng là gì?

let rightButton = UIBarButtonItem(title: "Done", style: .done, target: nil, action: nil) 
+0

tại sao lại bị bỏ phiếu? bạn có thể cho tôi biết .. xin vui lòng. tôi mới đến nhanh chóng –

Trả lời

8

Thông thường, bạn sẽ thấy mục tiêu và hành động cùng một lúc.

Mục tiêu và hành động được sử dụng để chỉ một phương pháp cụ thể. Trong đoạn mã của bạn, bạn đang tạo một UIBarButtonItem. Các UIBarButtonItem cần phải biết những gì phương pháp nó nên gọi khi nó được khai thác.

Làm cách nào để bạn biết phương thức nào cần gọi?

"Chỉ cần vượt qua tham khảo phương pháp" bạn có thể nói:

let rightButton = UIBarButtonItem(
    title: "Done", style: .done, methodToCall: self.myMethod) 

Thật không may, điều này chỉ hoạt động trong nhanh chóng. UIBarBUttonItem là C API mục tiêu nên không thể sử dụng phương pháp này.

Trong mục tiêu C, Selector s đại diện cho các phương pháp, nhưng chúng không lưu trữ đối tượng nào để gọi phương thức. Đó là lý do tại sao chúng tôi cần thêm thông số target. Nó chỉ định đối tượng nào nên gọi phương thức. Mặt khác, action chỉ định phương thức cần gọi.

Ở đây, chúng tôi muốn gọi self.myMethod. Đối tượng mà phương thức được gọi là self và phương thức được gọi là myMethod. Tuyệt quá! Bây giờ hãy vượt qua chúng!

let rightButton = UIBarButtonItem(
     title: "Done", style: .done, target: self, action: #selector(myMethod)) 
+0

và bạn có thể giúp tôi giải quyết vấn đề này http://codereview.stackexchange.com/questions/157401/loading-data-from-a-web-api-to-be-displayed-in-a - xem được –

0

Target:

là đối tượng/ví dụ mà bộ chọn (phương pháp u chỉ định trong hành động) nên được gọi là.

Hành động:

Tên của phương pháp mà bạn muốn kích hoạt khi nút khai thác.

khi nào tôi nên làm việc với Hành động mục tiêu và nil?

Khi bạn có nút trong màn hình của bạn/ViewController và bạn không muốn nó để kích hoạt bất kỳ phương pháp khi khai thác (nút Dummy không có hành động)

1

Theo Apple Đốc.

Mục tiêu hành động là mẫu thiết kế để đối tượng giữ thông tin cần thiết để gửi thư đến một đối tượng khác khi sự kiện xảy ra. Thông tin được lưu trữ bao gồm hai mục dữ liệu: một bộ chọn hành động , xác định phương thức cần gọi và mục tiêu , là đối tượng để nhận thư. Thư được gửi khi sự kiện xảy ra được gọi là thông điệp hành động. Mặc dù mục tiêu có thể là bất kỳ đối tượng nào, ngay cả đối tượng khung, nó thường là bộ điều khiển tùy chỉnh xử lý thông điệp hành động theo cách dành riêng cho ứng dụng.

enter image description here

Xét về MVC

Target:

là bộ điều khiển đó là hành động như đại biểu để xem đối tượng (UIBarButtonItem trong trường hợp của bạn).

Hành động:

gọi Phương pháp đáp lại để xem (Đoàn).

Để biết thêm séc: Targe-Action

0

Target - là một cái gì đó mà trên đó phương pháp hành động được cho là bắn. Trong trường hợp này, nó phải là tự. Tự đại diện ở đây đối tượng nút của bạn.

Hành động - có nghĩa là phương thức chọn sẽ được gọi trên sự kiện nhấn của nút.

Trong trường hợp bạn không muốn cho phép các sự kiện hành động trên nút thì hãy chỉ định công cụ chọn làm số không. Vì vậy, nó nên được đối xử chỉ là một đối tượng nút.

0

Tác vụ là bộ chọn cho phương thức được thực thi khi sự kiện tương ứng xảy ra (ví dụ: nút g được nhấn vào). Khi bạn không đặt hành động nào, nút của bạn sẽ không làm gì cả.

Mục tiêu là người nhận cuộc gọi tin nhắn. Khi bạn đặt nó thành nil, cuộc gọi tin nhắn được gửi qua chuỗi phản hồi. Điều này hiếm khi được sử dụng trong iOS nhưng rất phổ biến trong hệ điều hành MacOS.

Các vấn đề liên quan