2009-05-31 10 views
5

Wprowadzam aplikację menedżera notatek, która ma tableView w tabBar, gdzie wyświetlane są główne informacje o notatkach. Podczas uzyskiwania dostępu do jednej notatki możesz edytować jej właściwości. W jednym przycisku tabBar możesz wybrać sposób wyświetlania notatek w tableView.iPhone Dev: Przeładuj dane widoku tabeli z kontrolera podrzędnego i innego kontrolera w TabBar

Problem polega na tym, że nie wiem, jak ponownie załadować dane z kontrolera podrzędnego lub innego kontrolera z karty tabBar. Nie wiem, jak odwołać się do tableView z nich, więc mogę użyć reloadData do aktualizacji informacji TableView od nich.

Jestem całkiem nowy w rozwoju iPhone'a ... każda pomoc będzie naprawdę doceniana.

Odpowiedz

2

wzorzec MVC pomoże tutaj,

jak najdłużej utrzymać aktualizacją modelu z informacją, że jest potrzebny i kontrolery aktualizowanego z tego modalnej. Po ponownym przejrzeniu między widokami automatycznie aktualizujesz widoki.

w ten sposób można wywołać metody przeładowywania danych i zostaną one zaktualizowane.

[tableviewController.tableview reloadData]; 

to sposób uzyskiwania dostępu do komunikatu o ponownym wczytaniu danych.

+2

Dzięki, Wiem o reloadData i mogę go używać w pliku, w którym są metody tableView, ale nie wiem, jak uzyskać dostęp do tableViewController w kontrolerach podrzędnych lub innych kontrolerach w tabBar. –

+0

Poza tym to nie działa z innymi ViewControllers ... –

4

Umieść kod aktualizujący tabelę w viewWillAppear: zamiast widokuDidLoad - w ten sposób za każdym razem, gdy wracasz do kontrolera nadrzędnego z kontrolera podrzędnego, dane są przeładowywane.

+0

Dzięki, ale funkcja viewWillAppear nie jest wywoływana w moim kodzie ... Czy wiesz, dlaczego tak się stało? Czy mogę po prostu zrobić [self.tableView reloaData] wewnątrz tej funkcji, aby rozwiązać mój problem? –

+0

Tak, to powinno pomóc. Pamiętaj, że viewWillAppear jest zdefiniowany jako - (void) viewWillAppear: (BOOL) animated nie tylko - (void) viewWillAppear –

+0

To działa, dziękuję bardzo. Jedyne, co jest teraz nie tak, to to, że po powrocie z kontrolerów potomnych, wiersz pozostaje zaznaczony, chyba że wybiorę inny. Pozostaje on wybrany, nawet jeśli kliknę przycisk ujawnienia w innym wierszu i wrócę do widoku tabeli. To dziwne ... jakikolwiek pomysł, jak to rozwiązać? Dzięki. –

8

Powinieneś spróbować NSNotificationCenter.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomething:) name:@"doSomethingNotification" object:nil]; 

[[NSNotificationCenter defaultCenter] postNotificationName:@"doSomethingNotification" object:nil]; 
0

Doszło do tego samego problemu podczas pracy z prototypem komórki. Dziwnie byłem pewien, że wszystko zrobiłem dobrze.

Potem zacząłem myśleć, czy coś jest nie tak z XCode. Więc wszystko wyczyściłem, zrestartowałem XCode i dalej narzekałem.

W końcu próbowałem przerobić moje ostatnie zmiany na tablicy opowieści, która dodaje klasę tableviewcell i łączy ją ze wszystkimi kontrolkami interfejsu użytkownika. W końcu przestał narzekać.

Nie sądzę, że ten błąd jest spowodowany przez twój kod lub coś takiego, doszedłem do kilku dziwnych błędów w iOS 5. Prawo to wciąż testuje i ma wiele błędów.

W każdym razie scenorys jest świetny i postaram się do niego przyzwyczaić, rysuje on duży obraz Twojej aplikacji i łatwo poradzi sobie z relacjami między różnymi widokami. Poza tym bardzo podoba mi się jego metoda prepareforsegue.

OK Good Luck.

Powiązane problemy