2012-07-07 42 views
27

Khi tôi cố gắng để tạo ra một mối liên hệ giữa xib và chủ sở hữu của tập tin, có một số loại để lựa chọn:Sự khác nhau giữa kết nối đầu ra và kết nối hành động là gì?

  • kết nối ổ cắm
  • kết nối hành động
  • kết nối bộ sưu tập ổ cắm

gì sự khác biệt giữa tất cả những điều đó là gì?

+1

Một Outlet trình bày dữ liệu từ bạn ViewController ví dụ nếu bạn đặt text nhãn. Một hành động được báo cáo từ View to you Controller. Ví dụ: nếu bạn nhấp vào một nút. (Sự kiện TouchUpInside) – lukaskrieger

Trả lời

0

kết nối Outlet: là để kết nối một biến tài sản hoặc dụ, hình thành chủ sở hữu file Ví dụ hiện tại để các xib, khi xib này sẽ được deserialized kết nối sẽ được thực hiện cho các đối tượng chủ sở hữu file

Outlet hành động: là thêm một mục tiêu/hành động với các cửa hàng quy định (xem) từ xib đến lớp chủ

bộ sưu tập Outlet: cũng tương tự như một lối thoát, nhưng nó kết nối một loạt các quan điểm với ổ cắm var đơn

2

các cửa hàng cung cấp cho lớp của bạn (thường là một bộ điều khiển xem) một tham chiếu đến một khung nhìn con trong xib. Hành động cung cấp một phương thức để được gọi bằng điều khiển (thường cũng là chế độ xem con trên xib) khi được kích hoạt bởi người dùng.

Nói cách khác, đầu ra cho phép truy cập mã obj-c vào một đối tượng trong IB; trong khi hành động cho phép truy cập điều khiển xib vào mã obj-c.

+0

Bạn có thể nói họ cung cấp 'cầu theo hướng ngược nhau'. –

35

Cửa hàng và hành động là các cách (hoặc kết nối/trung gian) mà ViewController sẽ tương tác với Chế độ xem của nó. Mặc dù cả hai người trong số họ có thể trông giống nhau trong những ngày đầu của người quen iOS nhưng họ phục vụ mục đích khác nhau:

Outlet: ViewController talks to View by using Outlet. Bất kỳ đối tượng (UILabel, UIButton, UIImage, UIView vv) trong Xem có thể có một kết nối Outlet để ViewController. Cửa hàng được sử dụng như @property trong ViewController có nghĩa là:
- bạn có thể đặt thứ gì đó (như Cập nhật văn bản UILabel, Đặt hình nền của UIView vv) của một đối tượng bằng cách sử dụng ổ cắm.
- bạn có thể nhận được một cái gì đó từ một đối tượng (như giá trị hiện tại của UIStepper, cỡ chữ hiện tại của một NSAttributedString vv)

Action: View pass on messages about view to ViewController by using Action (Hoặc trong điều kiện kỹ thuật ViewController thiết lập chính nó như là Target cho bất kỳ Action trong Xem). Hành động là Method trong ViewController (không giống như Cửa hàng là @property trong ViewController). Bất cứ khi nào một cái gì đó (bất kỳ Event) xảy ra với một đối tượng (như UIbutton được khai thác) thì Action pass trên Message tới ViewController. Hành động (hoặc phương pháp hành động) có thể làm điều gì đó sau khi nhận được tin nhắn.
Lưu ý: Hành động chỉ có thể được đặt bởi đối tượng con của UIControl; có nghĩa là bạn không thể thiết lập hành động cho UILabel, UIView, vv

đâu \ Khi sử dụng Outlet hoặc hành động:
Trong những ngày đầu tiên của iOS quen của nó hoàn toàn bình thường để bị lẫn lộn giữa hành động và Outlet và tập quán của họ. Có một vài điều nhỏ (như nhận được văn bản/tiêu đề của một nút) có thể được thực hiện bởi cả hai Outlet và hành động, nhưng nếu không chúng rất khác nhau. Lưu ý các điểm trên khi sử dụng một hoặc nhiều điểm khác.

+1

Vì vậy, bạn có nói rằng một Outlet chỉ là một thuộc tính được chia sẻ giữa View và View controller, và một Action gửi thông điệp từ View đến View Controller? – rbp

+1

Bất động sản chỉ là một mặt tiền cho 2 phương thức accessor (phương thức getter và setter) và outlet cũng thiết lập và nhận giá trị từ/đến View vì vậy nó sẽ không sai khi nói outlet như một thuộc tính. Lưu ý: IBOutlet là thứ Xcode đặt trong Trình chỉnh sửa để nhắc Xcode rằng this không chỉ là @property ngẫu nhiên, đó là một lối thoát (tức là kết nối với Chế độ xem). Trình biên dịch bỏ qua nó. –

7

Cửa hàng được sử dụng khi bạn muốn thay đổi một số thuộc tính kiểm soát tức là màu văn bản hoặc kích thước văn bản của nhãn.

Trong khi Hành động được sử dụng khi bạn muốn phát hiện kích hoạt tức là khi nhấn nút.

1

Outlet & Action visualisation

Outlet và hành động kết nối nhiều cách trực tiếp mà một UIViewController thể giao tiếp với UView của nó. Ví dụ, khi một View Controller cần thiết lập văn bản của một UILabel, nó sẽ làm như vậy thông qua kết nối đầu ra. Khi một đối tượng UIButton của Chế độ xem được nhấn, nó sẽ chuyển thông báo tới Trình điều khiển Chế độ xem bằng cách sử dụng kết nối hành động. Điều này có nghĩa là ổ cắm được tạo ra trong View Controller được khai báo là @property, và một hành động được tạo ra bằng cách khai báo một phương thức.

An kết nối đầu ra được tạo khi bạn cần gửi thư từ mã của bạn đến đối tượng giao diện người dùng trong bảng phân cảnh của Xcode. Đối tượng có thể là điều khiển, chẳng hạn như nút, thanh trượt và nút chuyển hoặc có thể là bất kỳ đối tượng nào khác được xác định trong bảng phân cảnh của bạn, chẳng hạn như nhãn và thanh tiến trình. Ví dụ, khi mã của bạn xác định rằng một nhãn sẽ hiển thị một số văn bản, mã sẽ gửi một tin nhắn thông qua các cửa hàng nói với nhãn để hiển thị văn bản mới.

An kết nối hành động được tạo khi bạn cần gửi thư từ điều khiển trong bảng phân cảnh tới mã của bạn. Điều khiển là đối tượng giao diện người dùng gây ra các hành động hoặc kết quả hiển thị khi người dùng thao túng đối tượng. Ví dụ, khi người dùng chạm vào một nút, nút sẽ gửi một thông báo hành động đến mã của bạn để cho nó thực thi phương thức thích hợp. Các ví dụ khác về các điều khiển có thể được sử dụng để tạo các kết nối hành động là các trường văn bản, thanh trượt và các nút chuyển.

Tài liệu tham khảo: 1. https://medium.com/@GanChau/outlet-vs-action-connections-in-xcode-b5331fb233a1

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