Jak zaktualizować DetailView przy użyciu szablonu aplikacji MasterDetail
Jestem nowy w używaniu podzielonego widoku do tworzenia aplikacji na iPada. Kiedy po raz pierwszy tworzę projekt, używając tylko standardowego szablonu aplikacji MasterDetail (Xcode 4.2), tworzy on MasterViewController i DetailViewController. Szablon ma następującą metodę, która jest wywoływana po wybraniu wiersza z tabeli podręcznej (kontroler głównego widoku szczegółów):
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPathif (!self.detailViewController)
{
self.detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
}
[self.navigationController pushViewController:self.detailViewController animated:YES];
Teraz rozumiem, że kiedy używasz normalnego kontrolera nawigacyjnego, jeśli programujesz dla iPhone'a, robisz to tylko po to, aby wepchnąć inny kontroler widoku na stos. Jednak w przypadku tego szablonu po prostu umieszcza widok szczegółów w wyskakującym okienku, zamiast aktualizować to, co już tam jest. Nie wiem, co muszę zaktualizować, aby wybrać coś z wyskakującego okienka (główny widok szczegółów), a następnie zaktualizować widok detailView.
Aktualizacja:
Aby wypróbować i przetestować „detailItem” już skonfigurowany dla Ciebie w DetailViewController, wykomentowałem pushViewController i dodałem:
//[self.navigationController pushViewController:self.detailViewController animated:YES];
self.detailViewController.detailItem = @"Test";// setter in detailViewController
- (void)setDetailItem:(id)newDetailItem
{
if (_detailItem != newDetailItem) {
_detailItem = newDetailItem;// Update the view.
[self configureView];
} if (self.masterPopoverController != nil) {
[self.masterPopoverController dismissPopoverAnimated:YES];
}
}- (void)configureView
{
// Update the user interface for the detail item.
// detailDescriptionLabel.text is a IBOutlet to the label on the detailView
if (self.detailItem) {
self.detailDescriptionLabel.text = [self.detailItem description];
}
}
Zgodnie z tym kodem tekst etykiety w detailViewController powinien zostać zaktualizowany. Jednak po kliknięciu elementu w tabeli kontrolera widoku głównego nic się nie dzieje.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
1 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Następnie powiedz swojemu MasterViewController o DetailViewController, który jest już wyświetlany. Zwykle umieszczam w .
Pamiętaj, że DetailViewController jest już wyświetlany, więc nie zawsze będziesz musiał go ponownie przydzielać (chyba że zastąpisz go innym widokiem)
Pierwsza opcja
Użyj wywołań pełnomocników, aby ustawić informacje. Zadeklaruj protokół przekazywania informacji do detailView i poproś o jego odpowiednie wyświetlenie.
Tutaj
http://www.raywenderlich.com/1 ... orial
samouczek opisujący to bardziej szczegółowo.
Druga opcja
Przekaż DetailViewController trochę danych & amp; Zastąp metodę ustawiającą, aby zaktualizować detailView.
Tutaj
http://www.icodeblog.com/2010/ ... orld/
samouczek opisujący to bardziej szczegółowo.
Edit
: po prostu spojrzałem ponownie na szablon i kod taki jak już tam jest, ale kod tworzy zupełnie nowy widok detailView, dzięki czemu detailView, który można wyświetlić na splitViewController, nie zmienia się w ogóle.