nib maar kreeg geen UITableView

Mijn applicatie werkt voor iOS 5.1, maar voor de iOS 6-simulator krijg ik de volgende foutmelding.

Beëindiging van app vanwege niet-afgevangen uitzondering
‘NSInternalInconsistencyException’, reden: ‘-[UITableViewController
loadView] laadde de “MainListViewController” penpunt maar kreeg geen
UITableView.’

Ik classificeer UITableViewControlleren ik wil het niet veranderen.

De tabelweergave wordt programmatisch gemaakt, er is een dummy MainListViewController.xibom te laden van MainWindow.xibTab Bar Controller.

Ik heb ook geprobeerd MainListViewController.xibte verwijderen, te verwijderen uit de MainWindow.xibTab Bar Controller, de MainListViewControllerin AppDelegate te maken en toegevoegd aan Tab Bar Controller als UITabBarItemom van dit probleem met de penpunt af te komen, maar ik krijg nog steeds dezelfde foutmelding.


Antwoord 1, autoriteit 100%

Als je een NIB hebt voor de UITableViewController-subklasse, dan moet de view-uitgang moetworden aangesloten op een UITableView.

Je hebt gelijk om MainListViewController.xibte verwijderen en het allemaal in code te doen, maar de reden dat het voor jou niet werkte, is omdat de oude XIB niet wordt verwijderd wanneer je & loop. Verwijder de app dus uit de simulator en probeer het opnieuw. Dan zou het moeten werken.


Antwoord 2, autoriteit 28%

Ik had een soortgelijk probleem met storyboards. Ik zal mijn oplossing posten ten behoeve van anderen. De sleutel is dat als je de eigenaar van het bestand correct hebt ingesteld op de subklasse van UITableView, je er nog steeds voor moet zorgen dat de view-eigenschap is ingesteld op de tabelweergave. Ik gebruik storyboards, maar hetzelfde zou ook moeten gelden voor penpunten. Vouw het “documentoverzicht” uit zodat u de hiërarchie van uw storyboard kunt zien. Ik zal hieronder wat screenshots plaatsen. De snelle manier om dit op te lossen is door naar uw weergavete kijken in het documentoverzicht. Verwijder alle tableviews die je er als kind van hebt. Sleep de andere tabelweergave naar de weergave-eigenschap. Gedaan. Ik laat het je zien in screenshots.

Let op de twee tabellen. U wilt table1 en zijn cel verwijderen.

Goed. Sleep nu table2 naar de view en je bent klaar. Zou nu moeten werken. Als je een subklasse van UITableViewController hebt, moet deze in plaats van weergave Table View hebben, anders crasht het.


Antwoord 3, autoriteit 17%

De reden kan zijn:

.h-bestand controleer of het een subklasse is van UIViewController. het zal het probleem oplossen.


Antwoord 4, autoriteit 12%

Kortom, u stelt een aangepaste UITableViewController-subklasse in op een UIViewController !!
Je kan dit niet doen. Geef de UIViewController een UIViewController-subklasse.


Antwoord 5, autoriteit 12%

Als u UITableView gebruikt als uw bovenaanzicht.

Zoals dit:

U moet UITableViewController gebruiken in uw controller

class ItemsViewController: UITableViewController

Als je UITableView gebruikt onder een weergave in je Storyboatd.

Zoals dit:

U moet UITableViewDelegate en UITableViewDataSource gebruiken met UIViewController

class ItemsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource

Antwoord 6, autoriteit 4%

Ik vind de oplossing bij het gebruik van Storyboards en 1 Table View.

De sleutel is wanneer u een aangepaste klasse (newViewController) maakt, controleer gewoon of dit een subklasse is van UITableViewController. Eenmaal gemaakt Ga naar de tabelweergavecontroller (van onze tabel) en selecteer in de Identity Inspector de aangepaste klasse die zojuist is gemaakt (newViewController).

Dat werkt voor mij. Ik hoop dat mijn reactie iemand kan helpen.


Antwoord 7, autoriteit 3%

Sluit uw tafelweergave aan, want een View outlet.outlet moet worden aangesloten op een UITableView.


Antwoord 8, autoriteit 3%

Er zijn verschillende redenen waarom dit kan gebeuren.

  1. Misschien heeft u UITableViewDelegate & UITableViewDataSource naar uw .h

    @interface TableController: UIViewController {

  2. Misschien heeft u uw aangegeven stopcontacten niet aangesloten op de componenten in het Storyboard/Nib

  3. Misschien roept u een UIViewController aan in plaats van een UITableView of vide verser in uw .h

@interface TableController : UIViewController

of

@interface TableController : UITableViewController 

Antwoord 9

Ik had dit probleem en het oplossen ervan was maar één ding.

Bewaar de penpunt als u al …

Ga naar (XIB-bestand) en voeg een tableView-component uit de objectenbibliotheek toe aan het iPhone-scherm van het XIB-bestand, en het zou moeten werken 🙂


Antwoord 10

Het antwoord van @smileBot heeft me geholpen te beseffen dat de oplossing heel eenvoudig is en dat de fout van iOS logisch is

Beëindiging van app vanwege niet-afgevangen uitzondering
‘NSInternalInconsistencyException’, reden: ‘-[UITableViewController
loadView] laadde de “MainListViewController” penpunt maar kreeg geen
UITableView.’

Ze zeggen in feite dat de weergavecontroller van de penpunt geen UITableView retourneert omdat dat voor de meesten niet het geval is – uw penpunt retourneert een View– die standaard voor u wordt gemaakt wanneer u een nieuwe ViewController in de Xcode IDE.

De oplossing is zo simpel als het verwijderen van die View– wat misschien tegen de norm voelt – maar ga je gang en selecteer het en backspace – sleep dan een UITableView in je ViewController en deze UITableView zal nu fungeren als uw root-weergave in uw TableViewController.

Houd er rekening mee dat dit alleen nodig is voor klassen die UITableViewController rechtstreeks onderklassen.

Veel succes.


Antwoord 11

Dit werkte voor mij. Ik hoop dat het je helpt.

In AppDelegate–>

#import "TableViewController.h" // name of your TableViewController class
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//PUT
TableViewController *controller = [[TableViewController alloc]
                                  initWithStyle:UITableViewStylePlain];
    self.window = [[UIWindow alloc]
                   initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = controller;
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    // Override point for customization after application launch.
    return YES;
}

Zorg ervoor dat je viewcontroller in storyboard naar deze klasse wijst:


Antwoord 12

Ik kwam dit probleem ook tegen, maar ik gebruikte storyboard in xcode 6.2. Ik heb de bijbehorende weergave van het storyboard verwijderd en de tabelweergavecontroller opnieuw van de objectbibliotheek naar het storyboard gesleept, en dan werkt het.


Antwoord 13

Ik heb hetzelfde probleem en na 3 uur verspillen kom ik erachter…”dit is een vergissing” ik gebruik tableviewcontroller class en geef uiviewcontroller referentie van deze klasse, in plaats van view controller class ik neem tableviewcontroller class zoals ik uiviewcontroller in neem verhalenbord. dus verwijder de tableviewcontroller-klasse en plak je code van tableviewcontroller-klasse om de controller-klasse te bekijken, “niet de hele code plakken, alleen de logica plakken”, daarna in het storyboard in de identiteitsinspecteur geef de klassereferentie van de huidige weergavecontroller-klasse.

Other episodes