2012-11-09 19 views
6

thể trùng lặp:
How to tell when controller has resumed from background?Làm cách nào để làm mới Chế độ xem sau khi nhập applicationWillEnterForeground?

Làm thế nào để làm mới Xem sau dùng nhập applicationWillEnterForeground?

Tôi muốn hoàn thành việc thu hồi ví dụ như HomeViewController.

Tôi có và cập nhật chức năng trong HomeViewController và tôi muốn khi người dùng nhập vào để gọi chức năng cập nhật và tải lại dữ liệu bảng.

Trả lời

9

Mọi lớp học đều có thể đăng ký UIApplicationWillEnterForegroundNotification và phản ứng tương ứng. Nó không dành cho đại biểu ứng dụng và giúp phân tách mã nguồn tốt hơn.

+0

Bạn có một số liên kết mẫu vì tôi không bao giờ sử dụng UIApplicationWillEnter ForegroundNotification? – CroiOS

+3

http://stackoverflow.com/questions/3535907/how-to-tell-when-controller-has-resumed-from-background – Cyrille

+0

Tuyệt vời, nó hoạt động. Cảm ơn nhiều. – CroiOS

0

Bạn có thể khai báo thuộc tính trong lớp đại biểu ứng dụng của bạn trỏ đến đối tượng HomeViewController. Sau đó, bạn có thể gọi hàm cập nhật của bạn trong applicationWillEnterForeground.

7

Tạo một phương pháp viewDidLoad như thế này cho HomeViewController

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

// Don't forget to remove the observer in your dealloc method. 
// Otherwise it will stay retained by the [NSNotificationCenter defaultCenter]... 
- (void) dealloc { 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
    [super dealloc]; 
} 

bạn Nếu ViewController của bạn là một tableViewController bạn cũng có thể trực tiếp gọi hàm dữ liệu tải lại:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver:[self tableView] 
              selector:@selector(reloadData) 
               name:UIApplicationWillEnterForegroundNotification 
               object:nil]; 

} 
- (void) dealloc { 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
    [super dealloc]; 
} 

Hoặc bạn có thể sử dụng một khối:

[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationWillEnterForegroundNotification 
                object:nil 
                queue:[NSOperationQueue mainQueue] 
               usingBlock:^(NSNotification *note) { 
                [[self tableView] reloadData]; 
               }]; 
+0

Đừng quên xóa người quan sát trên dealloc! – Cyrille

+0

thực sự là Cyrille! – Tieme