Cách gọi Segues trong IOS với dữ liệu

* Khi sử dụng StoryBoard trong lập trình IOS có nhiều lúc ta cần phải lấy dữ liệu từ một viewController A sang một viewController B.

– Việc chuyển từ ViewController A sang ViewController B bằng StoryBoard cực kỳ dễ dàng, tuy nhiên việc chuyển dữ liệu thì không có nhiều người biết đến.

* Nhắc lại: Muốn chuyển từ viewController A sang viewController B ta dùng giữ Ctrl (Control) kéo từ ViewController A sang ViewController B. Như vậy controller (Điểm bắt đầu trỏ vào Button hay View) sẽ có một kết nối tới ViewController B. Khi đó chỉ cần được kích hoạt ViewController B sẽ được gọi mà không cần phải viết một dòng code nào trong chương trình.

* Tuy nhiên khi cần phải chuyển một dữ liệu từ ViewController A sang ViewController B thì chúng ta cần phải viết code trong câu lệnh:

– (void) prepareForSegue : (UIStoryboardSegue *) segues sender: (id) sender{

}

* Có nhiều cách để có thể chuyển dữ liệu. Tuy vậy, hầu hết số đó cần quan tâm đến destinationViewController (View đích) gây khó khăn cho việc chỉnh lại code.

* Ở đây các bạn có thể dùng dòng code @selector này để chuyển dữ liệu mà không cần quan tâm đến view đích là gì. Khi ViewController đích không có selector này thì segue sẽ không cần truyền biến sang. Như vậy các bạn có thể sử dụng một Object chung để lưu trữ những hàm này và tái sử dụng trên những viewController khác nhau để thúc đầy thời gian lập trình nhanh hơn nữa.

* Đầu tiên ở ViewController đích sẽ có thuộc tính cần truyền sang:

@property (assign, atomic) NSString * lkString;

* Đây là viewController nguồn có Segues  function:

– (void) prepareForSegue: (UIStoryboardSegue *) segue sender:(id) sender

{

if ([segue.destinationViewController respondsToSelector:@selector(setLkString:)]) {

[segue.destinationViewController performSelector:@selector(setLkString:) withObject:lkStringSource];

}

}

=> Đây là câu lệnh cho phép kiểm tra xem ViewController đích có selector setLkString hay không trước khi nó gọi selector này nên câu lệnh là tuyệt đối an toàn và có thể sử dụng chung cho rất nhiều view trong cùng một chương trình.

Tagged: , , , , , , , , , , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: