Statyczny widok tabeli poza UITableViewController


159

Po nowej aktualizacji Xcode moja aplikacja nie sprawdza poprawności i wyświetla ten błąd:

statyczne widoki tabel są prawidłowe tylko wtedy, gdy są osadzone w wystąpieniach UITableViewController

Jakieś szanse na łatwe rozwiązanie?


Zależy od tego, dlaczego używasz podklasy UIViewController zamiast UITableViewController.
David Berry,

3
Ponieważ potrzebuję innych elementów wewnątrz widoku, które nie należą do UITableViewController
Francesco S

1
Doświadczam tego samego problemu tutaj. Właśnie zaktualizowałem (lub obniżyłem, jak się wydaje, do tej pory) do Xcode 5.1 i mam ten sam problem. Mam kilka statycznych komórek w podklasie UITableViewController w moim UISplitViewController.
Stefan Arambasich

U mnie też zaczęło się dziać po aktualizacji. Mam kilka kontrolerów widoku zbudowanych ze statycznych komórek, nie jest to idealne rozwiązanie, ale wcześniej działało dobrze.
jdmunro

Nie musisz używać UITableViewController. Ten błąd pojawia się, jeśli masz statyczne komórki widoku tabeli w swoim UiTableView, więc myślę, że jednym prostym rozwiązaniem jest, jeśli potrzebujesz komórek, nie pozostawiaj ich statycznie. Po prostu dodaj delegata widoku tabeli i źródło danych oraz fikcyjne metody UITableViewDelegate
EarlySun

Odpowiedzi:


341

Jedynym sposobem uzyskania statycznego widoku UITableView wraz z innymi kontrolkami na tym samym ekranie jest użycie widoku kontenera. Postępuj w ten sposób, działa idealnie:

  1. Przeciągnij ViewController na swój scenorys.
  2. Przeciągnij TableViewController na swój scenorys.
  3. Dalej Przeciągnij widok kontenera do kontrolera ViewController i dostosuj go do żądanego rozmiaru (mniejszego niż widok) -> po przeciągnięciu widoku kontenera utworzy się płynność i inny widok. Usuń ten spływ i widok.
  4. Na koniec kliknij, naciskając klawisz ctrl w kontenerze i przeciągnij do nowego TableViewContoller. Wybierz Osadź.
  5. Stylizuj swój TableView tak, jak chcesz -> w tym statyczne komórki.

Powodzenia.

Ta odpowiedź została już znaleziona i udzielona tutaj: G.Huebner -> http://web.archive.org/web/20140928102504/http://iphonedevsdk.com/forum/iphone-sdk-development/111800-static-table- zobacz-tylko-komórki-work-in-a-uitableviewcontroller.html


Gdzie wziąć outlet lub działać? W UIViewControllerlub powinienem wziąć UITableViewController.
Bhavin Ramani

@Bhavin Ramani: Ponieważ jest to UITableViewController w kontenerze, sugeruję wziąć dokładnie tę klasę / podklasę do przechowywania Twoich IBOutlets.
LukeSideWalker

2
Wydaje mi się, że cała idea "komórek statycznych" jest zaimplementowana w sposób zależny od jakiejś wewnętrznej funkcjonalności UITableViewController.
Nicolas Miari

2
Dziękuję Ci za to. Potwierdzam, że działa w Xcode 8.3.1.
Atharva Vaidya

Po prostu niesamowite! Od jakiegoś czasu szukałem tego rozwiązania.
Jason Foglia,

8

Statyczny UITableView musi znajdować się w UITableViewController. Więc umieścisz tabelę w UITableViewController, a następnie dodasz ją jako childView do MainViewController.

Możesz polecić https://iphoneidoit.blogspot.in/2013/10/static-uitableview-in-uiviewcontroller.html


1
Wcześniej było wiele sposobów obejścia tego (np. Zatrzymanie komórki), ale teraz jest to błąd, niezależnie od tego. Myślę, że pytanie sugeruje, czy istnieje sposób na powstrzymanie błędu.
Matthew Knippen

Tak było. Niestety skończyło się na rozwiązaniu problemu za pomocą niestatycznego tableView
Francesco S

1
Yikes. Ilość ponownej pracy, jakiej wymagałaby konwersja na niestatyczną ze względu na wszystkie IBOutlets w moim pliku kontrolera widoku, jest zbyt duża, a IMO jest niedopuszczalne, aby aktualizacja przerwała to bez ostrzeżenia lub notatki o tym w dzienniku zmian ( ergo Zakładam, że na papierze nadal można mieć znak a UITableViewControllerze statycznymi komórkami wewnątrz a UISplitViewContoller. Skontaktowałem się z pomocą techniczną Apple i otrzymałem tylko ogólnie niezbyt pomocną odpowiedź e-mail łączącą mnie z forami. Przypuszczam, że spróbuję tam i zobaczę jeśli ktoś ma te same problemy po aktualizacji
Stefan Arambasich

4

Myślę, że najpierw przeciągasz ViewController na scenorys, a następnie przeciągasz tableView na ViewController. W ten sposób nie możesz używać statycznych komórek tabeli. Zamiast tego, co powinieneś zrobić, to przeciągnij TableViewController na główną scenorys zamiast ViewController, a następnie wybierz komórki statyczne. W ten sposób możesz pracować na statycznych komórkach i możesz używać dowolnych elementów na statycznych komórkach.


0

Cóż, jeśli naprawdę używasz statycznego tableView, powinieneś rozważyć skopiowanie / wklejanie wszystkiego do ScrollView lub StackView.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.