Ios 将数组传递给uitableviewcell时发生NSInvalidArgumentException
您好,我在将uitableview放入tableview单元格时遇到麻烦。当我尝试将其放入tableviewcell时 我为tableviewcell创建了一个新视图。我将uitableview放入单元格,为tableviewcell创建一个新类,并将其填充到表格中。但是我总是在[cell setNewsList:newsList]中出错;线路Ios 将数组传递给uitableviewcell时发生NSInvalidArgumentException,ios,objective-c,iphone,uitableview,Ios,Objective C,Iphone,Uitableview,您好,我在将uitableview放入tableview单元格时遇到麻烦。当我尝试将其放入tableviewcell时 我为tableviewcell创建了一个新视图。我将uitableview放入单元格,为tableviewcell创建一个新类,并将其填充到表格中。但是我总是在[cell setNewsList:newsList]中出错;线路 2014-11-04 19:20:15.881 Peşindeyiz[6272:317992] -[UITableViewCell setNewsLi
2014-11-04 19:20:15.881 Peşindeyiz[6272:317992] -[UITableViewCell setNewsList:]: unrecognized selector sent to instance 0x78ec00f0
2014-11-04 19:20:15.884 Peşindeyiz[6272:317992] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCell setNewsList:]: unrecognized selector sent to instance 0x78ec00f0'
*** First throw call stack:
(
0 CoreFoundation 0x0097b946 __exceptionPreprocess + 182
1 libobjc.A.dylib 0x00604a97 objc_exception_throw + 44
2 CoreFoundation 0x009835c5 -[NSObject(NSObject) doesNotRecognizeSelector:] + 277
3 CoreFoundation 0x008cc3e7 ___forwarding___ + 1047
4 CoreFoundation 0x008cbfae _CF_forwarding_prep_0 + 14
5 PesÃßindeyiz 0x000d3f82 -[MainViewController tableView:cellForRowAtIndexPath:] + 370
6 UIKit 0x012d41bc -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 473
7 UIKit 0x012d429e -[UITableView _createPreparedCellForGlobalRow:willDisplay:] + 77
8 UIKit 0x012ada6b -[UITableView _updateVisibleCellsNow:isRecursive:] + 3034
9 UIKit 0x012c83d1 -[UITableView layoutSubviews] + 222
10 UIKit 0x0123ddd1 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 608
11 libobjc.A.dylib 0x0061a771 -[NSObject performSelector:withObject:] + 70
12 QuartzCore 0x04fa328f -[CALayer layoutSublayers] + 152
13 QuartzCore 0x04f97115 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 397
14 QuartzCore 0x04f96f70 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 26
15 QuartzCore 0x04ef53c6 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 284
16 QuartzCore 0x04ef678c _ZN2CA11Transaction6commitEv + 392
17 QuartzCore 0x04ef6e58 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92
18 CoreFoundation 0x0089e9de __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
19 CoreFoundation 0x0089e920 __CFRunLoopDoObservers + 400
20 CoreFoundation 0x0089435a __CFRunLoopRun + 1226
21 CoreFoundation 0x00893bcb CFRunLoopRunSpecific + 443
22 CoreFoundation 0x008939fb CFRunLoopRunInMode + 123
23 GraphicsServices 0x04ad124f GSEventRunModal + 192
24 GraphicsServices 0x04ad108c GSEventRun + 104
25 UIKit 0x011b28b6 UIApplicationMain + 1526
26 PesÃßindeyiz 0x000d42fd main + 141
27 libdyld.dylib 0x02ef5ac9 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
MainViewController.m:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"HorizontalCell";
HorizontalTableCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSArray *item = self.news[indexPath.section];
NSMutableArray *newsList = [item valueForKey:@"news"];
[cell setNewsList:newsList];
/*for(NSArray *news in newsList){
[cell.imageView setImageWithURL:[NSURL URLWithString:[news valueForKey:@"resim"]]];
cell.textLabel.text = [news valueForKey:@"baslik"];
}*/
return cell;
}
水平表细胞.h:
#import <UIKit/UIKit.h>
@interface HorizontalTableCell : UITableViewCell
@property (nonatomic,strong) NSMutableArray *newsList;
@property (weak, nonatomic) IBOutlet UITableView *horizontalTableView;
@end
错误是,您试图在没有此类方法的UITableViewCell上调用setNewsList:。我猜您忘了将单元格的类更改为自定义类HorizontalTableCell。是的,在@rdelmar的评论中,似乎[tableView dequeueReusableCellWithIdentifier:CellIdentifier]返回的是UITableViewCell,而不是HorizontalTableCell。您是对的。我修好了。但必须说我现在是android开发者,正在学习ios。Eclipse比xcode更清楚地解释错误。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.newsList count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"NewsCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.textLabel.text = [self.newsList[indexPath.row] valueForKey:@"baslik"];
return cell;
}