我的UIViewController上有一个滚动视图。在我的滚动视图中,我添加了一个表视图和一个表视图单元格。我使用了之前用于UITableViewController的相同代码,但表视图中没有显示任何内容。我该怎么做才能解决它?
这是我的代码:
NSString *const kReward = @"reward";
NSString *const kPoints = @"points";
NSString *const kPicture = @"picture";
@interface RewardsVC ()
@end
@implementation RewardsVC
- (void)viewDidLoad {
[super viewDidLoad];
NSDictionary *rewardOne = @{kReward: @"gjshfkasjhdf",
kPoints: @"1sfasf",
kPicture: @"1.jpg",
};
NSDictionary *rewardTwo = @{kReward: @"df",
kPoints: @"dfas",
kPicture: @"asdf.jpg",
};
NSDictionary *rewardThree = @{kReward: @"asdf",
kPoints: @"asdf",
kPicture: @"sadfsdf.jpg",
};
NSString *stringPlaceHolder
NSArray *rewardsArray
rewardsArray = [NSArray arrayWithObjects:
rewardOne,
rewardTwo,
rewardThree,
nil];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return [rewardsArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
NSDictionary *rewardItems = [rewardsArray objectAtIndex:indexPath.row];
// Item Name
cell.textLabel.text = [rewardItems objectForKey:kReward];
// Item Price
cell.detailTextLabel.text = [rewardItems objectForKey:kPoints];
// Item Image
stringPlaceHolder = [rewardItems objectForKey:kPicture];
cell.imageView.image = [UIImage imageNamed: stringPlaceHolder];
return cell;
}
答案 0 :(得分:2)
在UITableViewCintroller中,无需创建表并在其上设置委托或数据源。因为那个阶级的defoult fuctinality。但是当你想在UIViewController的视图上创建一个tableview时。你需要Alloc a Tableview并且必须设置它的框架,然后通过Interface builder窗口(如果你是通过XIB或Storyboard创建它)或通过代码设置它的委托。
我假设您知道如何设置框架。 和代表。
只需在.h文件中调用UItableviewDelegate和UItableviewDatasorce
并在分配后在viewDidLoad中设置
tableview.delegate = self;
tableview.datasource = self;
答案 1 :(得分:1)
添加UITableViewDelegate& UITableViewDataSource
@interface RewardsVC : UIViewController <UITableViewDelegate, UITableViewDataSource>{
}
@property (nonatomic, strong) UITableView *tableView;
@end
在init tableview
之后在viewDidLoad中设置delegate和dataSourceself.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0,0,400,600)];
self.tableView.delegate = self;
self.tableView.dataSource = self;