UITable Cell信息仅显示何时选择行

时间:2015-10-10 12:22:55

标签: ios objective-c uitableview

enter image description here我正在使用UITableView获得一些非常奇怪的行为。我有以下代码,它将数据从数组加载到UITableView。代码似乎有效...但标签只显示我点击每一行时的值。我很难过为什么会这样,因为我很确定我以前没有这个问题......但我可能是错的。我的代码:

@interface TableViewController ()

@end

@implementation TableViewController

//@synthesize cRef;

-(void) getData:(NSData *) data {
    NSError *error;
    json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
    [self.tableView reloadData];
}
-(void) start {
    NSURL *url = [NSURL URLWithString: URL];
    NSData *data = [NSData dataWithContentsOfURL:url];
    [self getData:data];
    }

- (void)viewDidLoad {
    [super viewDidLoad];
    [self start];
    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Table view data source

- (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 [json count];;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *cellIdentifier = @"CellIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
    NSDictionary *info = [json objectAtIndex:indexPath.row];
    cell.textLabel.text = [info objectForKey:@"CountryName"];
    cell.detailTextLabel.text = [info objectForKey:@"id"];

    return cell;
}

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

正如@ktpatel所说尝试改变字体颜色

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *cellIdentifier = @"CellIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
    if (!cell){
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
    }
    NSDictionary *info = [json objectAtIndex:indexPath.row];
    cell.textLabel.text = [info objectForKey:@"CountryName"];
    cell.detailTextLabel.text = [info objectForKey:@"id"];

    // set font color
    cell.textLabel.textColor = [UIColor redColor];
    cell.detailTextLabel.textColor = [UIColor redColor];

    if ([cell isSelected]) {
        // make changes for selected state
        cell.textLabel.textColor = [UIColor blackColor];
        cell.detailTextLabel.textColor = [UIColor blackColor];
    }
    return cell;
}

另外,我没有看到你的didSelectRowAtIndexPath代码,我认为你必须在其中执行此操作才能看到UITableViewCell的选定状态

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    cell.textLabel.textColor = [UIColor blackColor];
    cell.detailTextLabel.textColor = [UIColor blackColor];
}