Jak wcisnąć widok do istniejącej komórki tabeli?

Mam ładną tabelę wypełnioną danymi, z niestandardowymi układami komórek. Obecnie dotknięcie komórki spowoduje wyświetlenie nowego widoku (powiedzmy, aby uzyskać więcej informacji), co działa dobrze.

Chciałbym jednak, aby nowy widok wchodził w granice komórki, a nie wypełniał cały ekran. Nie mam pojęcia, jak to osiągnąć – jakieś wskazówki, które możesz zaoferować?

Dzięki! :)

Aktualizacja: Oto część kodu, na wypadek gdyby pomogło to pomocnikom:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

FlippedViewController *flippedViewController = [[FlippedViewController alloc] initWithNibName:@"FlippedView" bundle:nil];

// What goes in here? Where do contentView and originalView come from?

[originalView removeFromSuperview];
[contentView addSubview:flippedViewController.view];

[flippedViewController release];
}

person Triz    schedule 11.08.2009    source źródło


Odpowiedzi (1)


Możesz dodać hak w tableView:didDeselectRowAtIndexPath: (metoda UITableViewDelegate), który używa wskaźnika do contentView konkretnej komórki i wykonuje zmiany w tej UIView tak samo jak w każdej innej.

Na przykład, jeśli chcesz po prostu zamienić originalView (zakładając, że to jest teraz w komórce) przez newView, możesz zrobić coś takiego:

// Use your own data structure and indexPath to retrieve contentView.
[originalView removeFromSuperview];
[contentView addSubview:newView];

To zaktualizowałoby widok bez animacji.

O animacji — oto dwa powiązane z poprzednimi pytaniami:

person Tyler    schedule 11.08.2009
comment
OK, do czegoś zmierzamy, dzięki. Pogódź się z moją nowicjuszką przez chwilę... W tej chwili w środku tableView:didSelectRowAtIndexPath: mam to: [self.navigationController pushViewController:self.editView animated:YES]; Gdzie mógłbym się dowiedzieć, jakie są moje odpowiedniki dla twoich originalView, contentView i newView? - person Triz; 12.08.2009
comment
Każda UITableViewCell ma swój własny UIView o nazwie contentView. Musiałbyś zapisać mapę z wiersza tabeli nr (i być może sekcji nr) do widoku treści, aby móc to sprawdzić. W zależności od konfiguracji możesz mieć tylko jeden widoczny UIView jako element podrzędny contentView — byłby to Twój oryginalny widok. A newView to wszystko, co chcesz wyświetlić w jego miejscu - z Twojego komentarza wynika, że ​​chcesz, aby zamiennikiem był self.editView, zakładając, że jest to obiekt UIView. - person Tyler; 12.08.2009
comment
Pracowałem nad tym całą noc i niestety nadal jestem trochę utrudniony. Nie wiem, jak odwołać się do contentView bieżącej komórki. Mam już skonfigurowany nowy widok i gotowy do dodania jako widok podrzędny, ale... Wkleję kod do powyższego pytania, zobaczę, czy to pomoże? Dzięki jeszcze raz! - person Triz; 14.08.2009