Używam UITextView wewnątrz komórki tableView w celu edycji tekstu.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITextField *textName = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 270, 24)];
[cell addSubview:textName];
[textName release];
}
To działa, ale podczas uruchamiania go na iPadzie nie jest prawidłowe.
Próbowałem określić szerokość komórki za pomocą cell.contentView.frame.size.width
ale zawsze zwraca 320.0 zarówno dla iPhone'a, jak i iPada
Również na iPadzie w trybie poziomym nie powinna być większa szerokość komórki?
Teo
Odpowiedzi:
2 dla odpowiedzi № 1Idealnie stworzysz zwyczaj UITableViewCell
i dostosuj rozmiary / pozycje kontroli w layoutSubviews
.
Jeśli chcesz dodać kontrolę tableView:cellForRowAtIndexPath:
, możesz uzyskać szerokość z samego tableView:
UITextField *textName = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width-50, 24)];
1 dla odpowiedzi nr 2
- Wielkość komórki na iPada jest zmieniana, gdy zostanie dodana do tabeli po zwróceniu funkcji. Jeśli chcesz zmienić rozmiar pola tekstowego z komórką, możesz zrobić coś takiego
textName.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight
. - Powinieneś dodać niestandardowe widoki do contentView (tj.
[cell.contentView addSubview:textName]
). Widok zawartości automatycznie zmniejsza się, aby obsługiwać tryb edycji, między innymi.
Podklasowanie UITableViewCell jest nieco przesadzone, jeśli chcesz tylko poprawić układ - to moje wrażenie, że automatyczne zmienianie rozmiaru jest szybsze niż ręczne określanie rozmiarów przy użyciu layoutSubviews.