/ / Jak mogę odświeżyć zawartość widoku przed popViewController? - ios, uiviewcontroller, uinavigationcontroller, viewdidload, popviewcontroller

Jak mogę odświeżyć zawartość widoku przed popViewController? - ios, uiviewcontroller, uinavigationcontroller, viewdidload, popviewcontroller

mam dwa viewcontroller. Kontroler pierwszego widoku zawiera mapę iadnotacje, kiedy dotknę adnotacji, pojawia się mój drugi widok. W drugim widoku dotknę przycisku kasowania. Tak więc zawartość mojego pierwszego widoku musi zostać odświeżona przed tym kodem: [self.navigationController popViewControllerAnimated:YES]; muszę zadzwonić viewdidload lub odśwież zawartość poprzedniego widoku z drugiego widoku.

Odpowiedzi:

4 dla odpowiedzi № 1

- (void) viewWillAppear: animowany

Nie jestem pewien, czy wywołał wcześniej [self.navigationController popViewControllerAnimated: YES]; ale na pewno przed zobaczeniem widoku. Wykonaj połączenie, aby ponownie załadować adnotacje mapy.

Upewnij się również, że wywołasz viewWillAppear super.

Jeśli oba widoki nie działają z tego samego obiektu danych, będziesz potrzebować delegata do przesłania danych.


0 dla odpowiedzi nr 2

Możesz użyć albo schematu delegatów, jak powiedział Andy, albo NSNotificationCenter . Osobiście używam NSNotificationCenter.

Aby korzystać z centrum powiadomień, musisz dodać obserwatorów do swoich klas kontrolerów widoku. Gdy wyświetlisz swój widok, wyślesz powiadomienie do centrum, powiedzmy, że twoje powiadomienie jest update kiedy powiadomisz centrum za pomocą update , centrum mówi cokolwiek ma klasa update uruchomić metodę .... to jest proste.

[[NSNotificationCenter defaultCenter] postNotificationName:@"update" object:nil];

sprawdź tę odpowiedź dla pełnego kodu: IOS: cofnij dwa widoki


0 dla odpowiedzi № 3

Zostaną wywołane ViewWillApear lub ViewDidApearponieważ w kontrolerze podglądu istnieją jakiekolwiek zmiany obiektu, ale jeśli chcesz zmienić swój viewcontrollerA z innego kontrolera viewcontrollerB, to wymagane jest wywołanie funkcji NSNotificationCenter z viewcontrollerA

zawsze możesz użyć NSNotificationCenter do aktualizacji swojego macierzystego kontrolera view

W twoim rodzica viewcontroller umieść to:

//since child view controller calls turnItOff, notification center calls function "turnButtonCountinuesOff"
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(turnButtonCountinuesOff) name:@"turnItOff" object:nil];

turnButtonCountinuesOff jest twoją funkcją w parent viewcontroller

W twoim dziecku viewcontroller umieść to:

//connect to parent UI view controller calls notification turnItOff.
[[NSNotificationCenter defaultCenter] postNotificationName:@"turnItOff" object:nil];

mam nadzieję, że to pomoże.