7

Tôi đã thấy một vài ví dụ về việc thêm người quan sát và xử lý trong cùng một lớp, nhưng điều tôi muốn biết là có thể thêm người quan sát trong chế độ xem đầu tiên điều khiển và xử lý nó trong bộ điều khiển xem thứ hai?Thêm 'addObserver' (NSNotificationCenter) vào bộ điều khiển xem thứ nhất, xử lý trong 2nd

Tôi muốn liên tục gửi khoảng cách từ bộ điều khiển chế độ xem đầu tiên và xử lý nó trong điều khiển thứ hai. Bộ điều khiển chế độ xem thứ hai được thêm dưới dạng chế độ xem phụ: addSubview, addChildViewController.

Nó giống như phát sóng trong Android.

+0

Tại sao phải không? Đó chính xác là * mục đích của 'NSNotificationCenter'. –

Trả lời

21

Có thể thực hiện được. NSNotificationCenter hoạt động chính xác theo cách đó.

Thứ nhất, bạn sẽ phải đăng ký trình nghe trong bộ điều khiển chế độ xem đầu tiên như dưới đây.

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(somethingHappens:) name:@"notificationName" object:nil]; 
} 

-(void)somethingHappens:(NSNotification*)notification 
{ 

} 

Thứ hai, đăng thông báo từ trình điều khiển chế độ xem thứ hai như dưới đây.

[[NSNotificationCenter defaultCenter] postNotificationName:@"notificationName" object:obj]; 

Hệ thống sẽ phát thông báo tới tất cả người nghe.

+0

Tôi hơi bối rối, tôi sử dụng 'postNotificationName' khi tôi muốn nói 'tất cả là ok, xử lý sự kiện', phải không? Nhưng 'somethingHappens' phải ở trong trình điều khiển chế độ xem thứ hai. Chỉ cần làm rõ mã nào phải nằm trong bộ điều khiển chính xác. –

+1

nếu bạn muốn gửi thông báo từ viewcontroller A đến viewController B, sau đó bạn cần sử dụng postnotification từ A view controller, và đăng ký người nghe và xử lý nó trong B, mỗi khi thông báo được đăng phương thức somethingHappens sẽ được gọi tự động, vì bạn đăng ký người nghe đến phương thức đó. – taffarel

+0

OK, cảm ơn người đàn ông! –