Aus irgendeinem Grund schlägt meine App fehl, wenn versucht wird, die Zellen in die Tabellenansicht zu laden. Alle meine Tabellenansichten in der App sind genau gleich und ich habe keine Probleme mit ihnen. Könnte es mit der Initialisierung des Controllers von einem anderen ViewController zu tun haben? Ich würde nicht denken. Meine Zelle im Storyboard hat den Identifikator erhalten. Hier ist ein Link zu einem Screenshot.Assertionsfehler in - [UITableView dequeueReusableCellWithIdentifier: forIndexPath:]
Also habe ich alles here versucht und nichts hat funktioniert.
Hier ist die Ausgabe mit dem [Tableview dequeueReusableCellWithIdentifier: CellIdentifier forIndexPath: indexPath] Methode:
2013-11-14 15:36:33.419 ComplyOS[43683:70b] *** Assertion failure in -[UITableView dequeueReusableCellWithIdentifier:forIndexPath:], /SourceCache/UIKit_Sim/UIKit-2903.23/UITableView.m:5261
2013-11-14 15:36:33.424 ComplyOS[43683:70b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'unable to dequeue a cell with identifier ProcedureCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'
*** First throw call stack:
(
0 CoreFoundation 0x0000000101fa9795 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x0000000101d0c991 objc_exception_throw + 43
2 CoreFoundation 0x0000000101fa961a +[NSException raise:format:arguments:] + 106
3 Foundation 0x00000001018a99e9 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 189
4 UIKit 0x00000001008f9879 -[UITableView dequeueReusableCellWithIdentifier:forIndexPath:] + 150
5 ComplyOS 0x00000001000099b4 -[EndoPxTableViewController tableView:cellForRowAtIndexPath:] + 116
6 UIKit 0x0000000100902b8a -[UITableView _createPreparedCellForGlobalRow:withIndexPath:] + 348
7 UIKit 0x00000001008ea836 -[UITableView _updateVisibleCellsNow:] + 2297
8 UIKit 0x00000001008fb381 -[UITableView layoutSubviews] + 207
9 UIKit 0x0000000100892b27 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 354
10 QuartzCore 0x00000001005afa22 -[CALayer layoutSublayers] + 151
11 QuartzCore 0x00000001005a4589 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 363
12 QuartzCore 0x00000001005a440a _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
13 QuartzCore 0x0000000100519694 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 252
14 QuartzCore 0x000000010051a70c _ZN2CA11Transaction6commitEv + 394
15 QuartzCore 0x000000010051ad79 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 89
16 CoreFoundation 0x0000000101f74ff7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
17 CoreFoundation 0x0000000101f74f67 __CFRunLoopDoObservers + 391
18 CoreFoundation 0x0000000101f546d2 __CFRunLoopRun + 946
19 CoreFoundation 0x0000000101f53f33 CFRunLoopRunSpecific + 467
20 GraphicsServices 0x0000000103c2b3a0 GSEventRunModal + 161
21 UIKit 0x0000000100837043 UIApplicationMain + 1010
22 Comply 0x0000000100002703 main + 115
23 libdyld.dylib 0x00000001029ed5fd start + 1
24 ??? 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Und hier ist mein Code für die UITableView Controller:
#import "EndoPxTableViewController.h"
#import <AFHTTPRequestOperationManager.h>
#import "ProcedureTableViewCell.h"
@interface EndoPxTableViewController(){}
@property (nonatomic, strong)NSArray *procedures;
@end
@implementation EndoPxTableViewController
- (void)setVisitItem:(Patient_VisitsModel *)visitItem{
if(_visitItem !=visitItem){
_visitItem = visitItem;
}
}
-(void)setUserId:(NSString *)userId{
if(_userId !=userId){
_userId = userId;
}
[self fetchProceduresData];
}
- (void) fetchProceduresData{
NSString *procedureURLString =[NSString stringWithFormat:@"https://XXXX";
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:procedureURLString parameters:nil success:^(AFHTTPRequestOperation *operation, id json) {
_procedures = json;
[self.tableView reloadData];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error occured in getSessionID method");
NSLog(@"Error: %@", error);
}];
}
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"Endoscopy Report";
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"Procedures:%@", [_procedures valueForKey:@"description"]);
return _procedures.count;
}
- (ProcedureTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ProcedureCell";
ProcedureTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
NSString *procedureDescription = [_procedures[indexPath.row] valueForKey:@"description"];
NSLog(@"Procedure Description:%@", procedureDescription);
cell.procedureLabel.text = procedureDescription;
cell.questionImage.image = nil;
return cell;
}
#pragma mark - Navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
}
@end
Vielen Dank für jedermanns Hilfe. Ich werde ein wenig verzweifelt.
Es scheint, dass Sie eine benutzerdefinierte Klasse 'ProcedureTableViewCell' für Ihre benutzerdefinierte Zelle verwenden. Bitte stellen Sie sicher, dass Sie nicht die Zell-ID irgendwie in ihm ersetzen –
Alles, was ich in dieser Klasse getan habe, war die IBOutlets für Label und UIImage zuweisen. –
Haben Sie die 'Klasse' Ihrer Prototypzelle auf' ProcedureTableViewCell' gesetzt? Ist 'ProcedureTableViewCell' eine Unterklasse von' UITableViewCell'. –