【发布时间】:2016-04-15 05:11:03
【问题描述】:
我有一个 ViewController,我在其中放置了另一个小的 UIView,其中我放置了一个 TableView,但不确定如何在此表中显示数组中的数据,任何帮助将不胜感激。我正在尝试使用以下代码加载表格:
-(void) animateResults {
_resultsLabel.text = [NSString stringWithFormat:@"You Scored %d", runningScore ];
resultsTable.delegate = self;
resultsTable.dataSource = self;
[self.resultsTable registerClass:[UITableViewCell self] forCellReuseIdentifier:@"resultsListCell"];
[self.resultsTable reloadData];
[self.view layoutIfNeeded];
[UIView animateWithDuration:0.3 animations:^{
_resultsView.frame = self.view.frame;
} completion:^(BOOL finished){
NSLog(@"%@", questionsArray);
}];
}
但现在我收到一个无法从其数据源获取单元格的消息。这是表格的代码
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
//Return number of sections
return 1;
}
//get number of rows by counting number of challenges
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section {
return questionsArray.count;
}
//setup cells in tableView
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath{
//setup cell
static NSString *CellIdentifier = @"resultsListCell";
resultsViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSDictionary *results = [questionsArray objectAtIndex:indexPath.row];
NSString *resultsName = [results objectForKey:@"answers"];
BOOL correct = [[results objectForKey:@"correct"] boolValue];
if (!correct) {
cell.resultsIcon.image = [UIImage imageNamed:@"BlackIconLock.png"];
}
else{
cell.resultsIcon.image = nil;
}
cell.resultsName.text = resultsName;
return cell;
}
这是这个视图控制器的 .h
#import <UIKit/UIKit.h>
#import "Store.h"
#import "flags.h"
#import "Tribes.h"
#import "resultsViewCell.h"
@interface GamePlayViewController : UIViewController <UITableViewDataSource,UITableViewDelegate>{
NSMutableArray *questionsArray;
NSMutableArray *answersArray;
NSInteger gameSelected;
NSMutableArray *revealArray;
NSTimer *questionTimer;
BOOL GameInProgress;
int random;
int questionTimerCounter;
int loopCounter;
int runningScore;
}
@property (weak, nonatomic) IBOutlet UIImageView *questionImage;
@property (weak, nonatomic) IBOutlet UILabel *answerLabel1;
@property (weak, nonatomic) IBOutlet UILabel *answerLabel2;
@property (weak, nonatomic) IBOutlet UILabel *answerLabel3;
- (IBAction)answer1:(id)sender;
- (IBAction)answer2:(id)sender;
- (IBAction)answer3:(id)sender;
@property (weak, nonatomic) IBOutlet UIImageView *cover1;
@property (weak, nonatomic) IBOutlet UIImageView *cover2;
@property (weak, nonatomic) IBOutlet UIImageView *cover3;
@property (weak, nonatomic) IBOutlet UIImageView *cover4;
@property (weak, nonatomic) IBOutlet UIImageView *cover5;
@property (weak, nonatomic) IBOutlet UIImageView *cover6;
@property (weak, nonatomic) IBOutlet UIImageView *cover7;
@property (weak, nonatomic) IBOutlet UIImageView *cover8;
@property (weak, nonatomic) IBOutlet UIView *coreView;
@property (weak, nonatomic) IBOutlet UILabel *resultsLabel;
@property (strong, nonatomic) IBOutlet UITableView *resultsTable;
@property (weak, nonatomic) IBOutlet UIView *resultsView;
@end
我收到此错误“由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'-[UITableViewCell resultsIcon]:无法识别的选择器已发送到实例” 我被卡住了,不知道如何继续。预先感谢您为我提供的任何帮助或指导。
哦,是的,这是 resultsViewCell.h
@interface resultsViewCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UIImageView *resultsFlag;
@property (strong, nonatomic) IBOutlet UILabel *resultsName;
@property (strong, nonatomic) IBOutlet UIImageView *resultsIcon;
@end
【问题讨论】:
-
我认为这些
resultsTable.delegate = self;和resultsTable.dataSource = self;应该在viewDidLoad中。此外,如果您的单元格有自定义类和自定义 .xib,那么您必须注册它。如果两者都不正确,请尝试 NSLog 你的数据,看看它是否包含任何内容 -
当我加载委托和数据源时,我正在加载一个带有表格的 UIView。就数组中的数据而言,我已记录并显示数据实际上已准备好加载,但我假设在单元加载期间我遗漏了一些东西。
-
你有自定义单元格类和自定义 xib 吗?如果不是,那么在设置 dataSource 和委托之前,请确保您的 tableView 不是 nil 由 NSLog 设置
-
是的,我刚刚更新了帖子以反映结果视图单元格。 h 文件。
-
尝试删除代码中的
cell.resultsIcon.image...行,看看它是否有效?否则尝试看看你是否连接错误的 IBOutlet 或其他东西
标签: ios objective-c uitableview