表视图,而不是UITableViewController

时间:2015-07-24 04:02:11

标签: ios objective-c xcode

我的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;
}

2 个答案:

答案 0 :(得分:2)

在UITableViewCintroller中,无需创建表并在其上设置委托或数据源。因为那个阶级的defoult fuctinality。但是当你想在UIViewController的视图上创建一个tableview时。你需要Alloc a Tableview并且必须设置它的框架,然后通过Interface builder窗口(如果你是通过XIB或Storyboard创建它)或通过代码设置它的委托。

我假设您知道如何设置框架。 和代表。

只需在.h文件中调用UItableviewDelegate和UItableviewDatasorce

并在分配后在viewDidLoad中设置

tableview.delegate = self;

tableview.datasource = self;

和Iinerface builder .. enter image description here

答案 1 :(得分:1)

添加UITableViewDelegate& UITableViewDataSource

@interface RewardsVC : UIViewController <UITableViewDelegate, UITableViewDataSource>{

}

@property (nonatomic, strong) UITableView *tableView;

@end

在init tableview

之后在viewDidLoad中设置delegate和dataSource
self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0,0,400,600)];
self.tableView.delegate = self;
self.tableView.dataSource = self;