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.