2015-07-03 21 views
12

Tôi cần làm mới view controller khi nhấn một nút nhất định. Chỉ cần kích hoạt viewDidLoad() dường như không hoạt động cho những gì tôi cần làm. Tuy nhiên, khi tôi rời khỏi view controller sau đó quay trở lại với nó, nó có vẻ hoạt động hoàn hảo?tải lại bộ điều khiển chế độ xem nhanh

Làm cách nào để tôi có thể làm mới/tải lại view controller như thể tôi đã rời khỏi nó rồi quay lại với nó mà không bao giờ thực sự rời khỏi nó?

+0

biết chính xác là bạn đang cố gắng để làm mới? – streem

+0

bạn có tìm thấy giải pháp nào không? –

+0

Đây là câu hỏi tương tự như một câu hỏi khác mà tôi đã trả lời. Vui lòng xem phản hồi của tôi tại đây: [cập nhật bộ điều khiển chế độ xem với dữ liệu mới] (https://stackoverflow.com/questions/31110923/navigate-swipe-between-articles-in-section-using-table-view-controller/ 46576097 # 46576097) –

Trả lời

9

Bất kỳ mã nào bạn đang viết trong viewDidLoad, hãy thử thêm mã đó vào viewWillappear(). Tôi nghĩ rằng điều này sẽ giải quyết vấn đề của bạn.

4

Điều này có thể hơi muộn nhưng bạn đã thử loadView()?

+4

public func loadView() // Đây là nơi các lớp con nên tạo phân cấp khung nhìn tùy chỉnh của chúng nếu chúng không sử dụng ngòi. ** Không bao giờ được gọi trực tiếp. ** [moreHere] (http://stackoverflow.com/a/8876346/1264893) –

+0

Tôi không nghĩ rằng anh ấy đang nói gọi nó trực tiếp. Anh ấy đang nói thêm mã ở đó. –

6

Bạn không nên gọi phương thức viewDidLoad bằng tay, Thay vào đó nếu bạn muốn tải lại bất kỳ dữ liệu hoặc bất kỳ giao diện người dùng, bạn có thể sử dụng này:

override func viewDidLoad() { 
    super.viewDidLoad(); 

    let myButton = UIButton() 

    // When user touch myButton, we're going to call loadData method 
    myButton.addTarget(self, action: #selector(self.loadData), forControlEvents: .TouchUpInside) 

    // Load the data 
    self.loadData(); 
} 

func loadData() { 
    // code to load data from network, and refresh the interface 
    tableView.reloadData() 
} 

Bất cứ khi nào bạn muốn tải lại dữ liệu và làm mới giao diện, bạn có thể gọi self.loadData()

+5

Làm cách nào để bạn thực hiện phần giao diện làm mới thực tế này? –

+1

Khi bạn muốn tải lại, hãy gọi lại loadData để lấy dữ liệu từ mô hình. Trong một tableView gọi reloadData() hoặc trong chế độ xem thông thường, setNeedsDisplay. – Vincent

+0

// Đây là nơi các lớp con nên tạo cấu trúc phân cấp tùy chỉnh của chúng nếu chúng không sử dụng ngòi bút. Không bao giờ được gọi trực tiếp. –

0

Tại bất kỳ cuộc gọi điểm khi bạn muốn tải lại Xem viewController hoặc bất kỳ xem

<View you want to reload>.setNeedsLayout() 
<View you want to reload>.layoutIfNeeded() 
Các vấn đề liên quan