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.