我有以下代码,应使用JSON变量提供的信息填充UITableView
。问题是没有标签(TitleLabel
和ReferenceLabel
)填充,我留下了默认的标签标题。我错过了什么(这让我发疯了?)
TableView.h
#import <UIKit/UIKit.h>
#define kGETUrl @"http://localhost/RtnDBScript.php"
@interface TableViewController : UITableViewController {
NSMutableArray *json;
}
TableView.m
#import "TableViewController.h"
#import "TableViewCell.h"
@interface TableViewController ()
@end
@implementation TableViewController
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
}
return self;
}
- (void) getData:(NSData *) data {
json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
[self.tableView reloadData];
}
- (void) start {
NSURL *url = [NSURL URLWithString:kGETUrl];
NSData *data = [NSData dataWithContentsOfURL:url];
[self getData:data];
}
#pragma mark - View Lifecycle
- (void)viewDidLoad {
[super viewDidLoad];
[self start];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return [json count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"TableViewCell";
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (cell == nil) {
cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
NSDictionary *info = [json objectAtIndex:indexPath.row];
cell.TitleLabel.text = [info objectForKey:@"Name"];
cell.DescriptionLabel.text = [info objectForKey:@"Message"];
return cell;
}
在上面的代码中,我得到以下错误'Property'TitleLabel'在'CountryTableViewCell'类型的对象上找不到 cell.TitleLabel.text = [info objectForKey:@“Name”]; cell.DescriptionLabel.text = [info objectForKey:@“Message”];
TableViewCell.h
#import <UIKit/UIKit.h>
@interface CountryTableViewCell : UITableViewCell{
}
TabelViewCell.m
@implementation CountryTableViewCell
- (void)awakeFromNib {
// Initialization code
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
任何和所有帮助表示赞赏。
答案 0 :(得分:-1)
你能试试吗?
CountryTableViewCell *cell = (CountryTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// It seems that you are using prototype cell so no need to alloc.
//if (cell == nil) {
// cell = [[CountryTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
//}
确保CellIdentifier
与storyboard原型单元格中的标识符匹配。
更新
如果您可以看到默认文本,则问题可能在于绑定标签(标签已创建但未绑定到插座)。
验证在分配文本后立即记录日志。
NSLog([cell.TitleLabel description]);
你可以试试吗
cell.TitleLabel.text = [NSString stringWithFormat:@"%@",[info objectForKey:@"Name"]];// Tell the system explicitly that this value will be NSString.