2014-10-01 2 views
6

Ich habe eine Ansicht mit Tabelle, um eine Liste der Kontakte und eine andere Ansicht für ihre Details anzuzeigen. Problem ist, wenn ich Kontakte-Ansicht öffne, dann funktioniert es gut; aber wenn ich es öffne, gehe zur Detailansicht des Kontakts und drücke zurück, dann stürzt es ab. Es zeigt mir Fehler wie unten.Grund 'uiable Datenquelle ist nicht gesetzt' Fehler in iOS 8.0.2

Assertionsfehler in - [UITableView _createPreparedCellForGlobalRow: withIndexPath:], /SourceCache/UIKit_Sim/UIKit-1914.84/UITableView.m:6048.
App beenden aufgrund nicht abgefangene Ausnahme 'NSInternalInconsistencyException' Grund: 'UITableView Datasource nicht gesetzt'

Ich habe dies beobachtet in iOS 8.0.2, die auf iOS 7.0 funktioniert gut. Gibt es etwas in Bezug auf die iOS-Version?

Das Gleiche passiert im Nachrichtenmodul. Hier poste ich Code-Snippet.

MessageListController.m

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
} 

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:YES]; 

    self.tabBarController.tabBar.hidden = FALSE; 

    instanceMessageList.delegate = self; 
    instanceMessageList.dataSource = self; 
    [self setNavigationBarView]; 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
    [self setEditing:FALSE animated:YES]; 
} 

- (void)dealloc 
{ 
    [instanceMessageList release]; 
    [super dealloc]; 
} 

MessageListViewController.h

@interface MessageListViewController : UIViewController <UITableViewDelegate, UITableViewDataSource,NSFetchedResultsControllerDelegate, MessageDelegate, UIActionSheetDelegate> 
{ 
#pragma mark - 
#pragma mark Instance variable declaration 

    IBOutlet UITableView *instanceMessageList; 
    IBOutlet UILabel *noMessages; 
} 

#pragma mark - 
#pragma mark Instance variable property declaration 

@property (nonatomic, retain) UITableView *instanceMessageList; 

@end 
+1

Post verwandten Code. Wie setzen Sie 'dataSource' und' delegates' in die Tabellenansicht und verwenden Sie arc oder non-arc? –

+0

ich benutze nicht-arc. – pratik03

+0

mehr Code erforderlich, fragen Sie mich frei. – pratik03

Antwort

0

Offensichtlich ist die Ansicht neu geladen zu werden und die Datenquelle ist irgendwo aufgeregt. Fügen Sie in Ihrem Contacts Controller -viewDidLoad folgenden Code hinzu:

self.tableView.dataSource = self; 
self.tableView.delegate = self; 
+0

Ich habe das getan. Deshalb funktioniert es zum ersten Mal, wenn ich die Kontaktansicht öffne. aber nicht nachdem ich vom Detail zurückgekommen bin. – pratik03

+0

Ok, ich nehme an, ich könnte dein Problem lösen, wenn du deiner Frage einen Code hinzufügst. – kelin

1

Die Lösung erhalten. Der tatsächliche Fehler ist hier nicht im obigen Code. Fehler tritt in der Detailansicht in der viewWillDisappear() -Methode auf.
Wurzel Ursache ist: bei der Wiedergabe-Taste gedrückt wird, Tastatur wird ausgeblendet, die UITableView verursacht CellForRowAtIndexPath() Methode auszuführen und zu diesem Zeitpunkt und in ViewWillDisappear() Methode Ich war Tisch Datenquelle Einstellung null auf. was einen Fehler verursacht hat.

Verwandte Themen