2015-07-03 44 views
12

Muszę odświeżyć view controller po kliknięciu wybranego przycisku. Po prostu aktywacja viewDidLoad() wydaje się nie działać dla tego, co muszę zrobić. Jednak kiedy opuszczam view controller, a następnie wracam do niego, wygląda na to, że działa idealnie?ponowne załadowanie kontrolera podglądu swift

Jak mogę odświeżyć/ponownie załadować view controller tak, jakbym go zostawił, a następnie powrócić do niego, nie opuszczając go?

+0

Co dokładnie starasz się odświeżyć? – streem

+0

znalazłeś jakieś rozwiązanie? –

+0

To pytanie jest podobne do innego pytania, na które odpowiedziałem. Proszę spojrzeć na moją odpowiedź tutaj: [aktualizowanie kontrolera widoku z nowymi danymi] (https://stackoverflow.com/questions/31110923/navigate-swipe-between-articles-in-section-using-table-view-controller/ 46576097 # 46576097) –

Odpowiedz

9

Niezależnie od kodu, który piszemy w viewDidLoad, spróbuj dodać to w viewWillappear(). Myślę, że rozwiąże to twój problem.

4

To może być trochę za późno, ale czy próbowałeś loadView()?

+4

public func loadView() // W tym miejscu podklasy powinny utworzyć swoją niestandardową hierarchię widoków, jeśli nie używają stalówki. ** Nigdy nie powinien być wywoływany bezpośrednio. ** [moreHere] (http://stackoverflow.com/a/8876346/1264893) –

+0

Nie sądzę, że mówi, aby zadzwonić bezpośrednio. Mówi, żeby dodać tam kod. –

6

Nie należy wywołać metodę viewDidLoad ręcznie, Zamiast tego, jeśli chcesz, aby przeładować żadnych danych ani żadnego interfejsu użytkownika, można użyć tego:

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() 
} 

Gdy chcesz, aby przeładować dane i odświeżyć interfejs, można zadzwonić self.loadData()

+5

W jaki sposób robisz faktyczny fragment interfejsu odświeżania tego? –

+1

Gdy chcesz ponownie załadować, wywołaj ponownie loadData, aby pobrać dane z modelu. W tableView wywołaj metodę reloadData() lub w widoku standardowym setNeedsDisplay. – Vincent

+0

// W tym miejscu podklasy powinny utworzyć swoją niestandardową hierarchię widoków, jeśli nie używają końcówki. Nigdy nie powinien być wywoływany bezpośrednio. –

0

w każdym punkcie połączenia, gdy chcemy, aby przeładować View viewController lub dowolny widok

<View you want to reload>.setNeedsLayout() 
<View you want to reload>.layoutIfNeeded()