2015-06-25 14 views
6

Hiện tại tôi có 3 tệp nhanh: ManualViewController, AutoViewController, MainLàm cách nào để cập nhật Dữ liệu trong chế độ xem bảng bằng cách sử dụng nhanh?

ManualViewController là UIViewController với chế độ xem bảng. AutoViewController là một UIViewController với một vài nút. Chính chỉ là một tệp nhanh với tất cả dữ liệu cho chế độ xem bảng.

ManualViewController và AutoViewController được điều khiển bằng TabBarController.

Khi tôi chạy ứng dụng, nội dung ban đầu được tìm thấy trong Main.swift được tải lên chế độ xem bảng. Khi tôi đi đến chế độ xem tiếp theo, ví dụ AutoViewController và nhấp vào nút để thay đổi dữ liệu trong Main.swift, các thay đổi dữ liệu. Vấn đề là khi tôi chuyển trở lại ManualViewController bảng vẫn chứa dữ liệu cũ và không chứa dữ liệu cập nhật.

Tôi cũng đã cố gắng này:

override func viewWillAppear(animated: Bool) 
{ 
    super.viewWillAppear(false) 
    self.tableView.reloadData() 
} 

Nó vẫn din't làm việc.

+0

Tôi nghĩ bạn không cập nhật mảng hoặc dữ liệu được sử dụng để hiển thị trong ManualViewController của bạn. –

+0

Tôi đã cập nhật dữ liệu, tôi đã có thể in dữ liệu cập nhật trong ManualViewController nhưng không tải dữ liệu cập nhật trong tableview. –

+0

Nội dung của bạn trong Main.swift như thế nào? Nó là một đối tượng? Một biến số ? Một cấu trúc? –

Trả lời

3

Bạn có thể sử dụng NSNotificationCenter để cập nhật tableView từ chế độ xem khác.

khai -addObserver: của bạn đã được như thế này trong tableView điều khiển của bạn trong viewDidLoad phương pháp:

override func viewDidLoad() { 
    super.viewDidLoad() 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "refreshTable:", name: "refresh", object: nil) 
} 

Và chức năng của bạn cho addObserver này sẽ thích:

func refreshTable(notification: NSNotification) { 

    println("Received Notification") 
    self.tableView.reloadData() 
} 

Bây giờ bạn có thể gửi thông báo như thế này khi bạn điều hướng đến bộ điều khiển tableView:

NSNotificationCenter.defaultCenter().postNotificationName("refresh", object: nil, userInfo: nil) 

Kiểm tra dự án mẫu THIS để biết thêm thông tin.

Hy vọng nó sẽ giúp bạn.

+0

Ví dụ của bạn thật hoàn hảo! Cảm ơn bạn! –

+0

Rất vui được giúp bạn .. :) –

1

Đối với những người dùng khác đến đây chỉ muốn biết làm thế nào để tải lại dữ liệu trong một UITableView, chỉ cần làm như sau: (. Các chi tiết của câu trả lời chấp nhận làm cho nó khó có thể tìm thấy ở đó)

self.tableView.reloadData() 

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