iphone - uitableview reloadRowsAtIndexPaths 不工作

标签 iphone ios delegates tableview

我有一个 tableviewcellRegisterViewController ,当我点击它时,它会推送到 SelectCityViewController我可以从 uipickerview 中选择一个城市.我在 SelectCityViewController 中定义了一个委托(delegate).但是当我实现委托(delegate)方法时,我从 pickerview 得到了城市。和选定的 indexpath来自 didSelectRowAtIndexPathRegisterViewController .当我检查日志时,我得到了城市和选定的 indexpath .但是当我调用reloadRowsAtIndexPaths ,单元格仍然有旧的 titlelabel 文本。代码:

SelectCityViewController.h

@protocol SelectCityDelegate <NSObject>

- (void)didGetCity:(City *)city;

@end

SelectCityViewController.m

- (void)finished:(UIBarButtonItem *)buttonItem
{
    if ([self.delegate respondsToSelector:@selector(didGetCity:)]) {
        [self.delegate didGetCity:self.city];
    }
    NSLog(@"%@", self.city.city);
    [self.navigationController popViewControllerAnimated:YES];
}

RegisterViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 2) {
        self.selectedIndexPath = indexPath;
        UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
        SelectCityViewController *signUp = [storyBoard instantiateViewControllerWithIdentifier:@"SignVC"];
        signUp.delegate = self;
        [self.navigationController pushViewController:signUp animated:YES];
    }
}

- (void)didGetCity:(City *)city
{
    NSLog(@"%@", city.city);
    NSLog(@"%@", selectedIndexPath);
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:selectedIndexPath];
    cell.textLabel.text = city.city;
    [self.tableView reloadRowsAtIndexPaths:@[selectedIndexPath] withRowAnimation:UITableViewRowAnimationFade];
}

最佳答案

我认为问题出在下面的代码中,您不必在此处设置值,因为当您重新加载时,它将使用您创建单元格的函数中的值覆盖该值。

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:selectedIndexPath];
cell.textLabel.text = city.city;

只需重新加载单元格,并将上面的代码放入您的

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

   //Cell intialization and other things

      cell.textLabel.text = city.city;
}

关于iphone - uitableview reloadRowsAtIndexPaths 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15630752/

相关文章:

ios - 我怎样才能概述文本字体?

ios - 如何取消或停止来自客户端的推送通知?

swift - 如何跨多个 View Controller 引用同一个类的实例?

ios - Apple 应用商店 IPV6 要求

iphone - popViewController 不会自动旋转回允许的方向

iphone - UITextView 作为自己的委托(delegate)意味着无限循环

c# - 参数化通用事件系统

ios - 展开 Storyboard(退出)segue 是否可以取代父场景中对子委托(delegate)的需求?

php - 当jquery向网页添加宽元素时动态重置iPhone iPad上的视口(viewport)

iphone - 如何修复录制视频的持续时间