【问题标题】:UITableview on nib (view) doesn't reload (Objective-C)笔尖(视图)上的 UITableview 不会重新加载(Objective-C)
【发布时间】:2017-09-08 13:13:20
【问题描述】:

我想在我的 FAQViewcontroller 中重新加载一些数据。 tableview 被放置在一个 nib 文件(视图) 中,该文件与 Viewcontroller 一起加载,调用方式如下:

FAQViewController *vc = [[FAQViewController alloc] initWithNibName:@"FAQViewController" bundle:nil];
            [self presentViewController:vc animated:YES completion:nil]; 

在 FAQViewcontroller 的 viewDidLoad 中,tableview 以正确的方式显示(我看到分隔线,当我更改 backgroundColor 时,它运行良好)。但是还没有要显示的信息,所以单元格是空的(如预期的那样)。

- (void)viewDidLoad {
[super viewDidLoad];

self.tableView.delegate = self;
self.tableView.dataSource = self;

[self.tableView registerNib:[UINib nibWithNibName:@"FAQCell" bundle:nil] forCellReuseIdentifier:@"FAQCell"];

if (self.faqData == nil || [_faqData count] == 0) {
    dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
        [[DataModel sharedInstance] getFrequentlyAskedQuestions:^(NSError *error) {

        }];
    });
}
}

当网络调用完成后,FAQViewcontroller中的这个函数被调用:

- (void)setFaqData:(NSArray *)faqData {

_faqData = faqData;
NSLog(@"%@", _faqData);

dispatch_async(dispatch_get_main_queue(), ^() {
    [self.tableView reloadData];
});
}

但是 reloadData 什么也没做。 numberofrowsinsection 没有被调用。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return _faqData.count;
}

我不知道该怎么办。以前从未有过(通常我用 Swift 编写代码,也许我忘记了 Objective-C 中的某些内容)?

有谁知道我做错了什么?

非常感谢!

【问题讨论】:

  • 你是否正确设置了表格视图数据源?
  • 确保您在 Interface Builder 中连接了表格视图,并且正如 Ratul Sharker 指出的那样,数据源委托方法都已正确实现。
  • self.tableViewnil
  • 在viewdidload中不是nil,而是在函数SetFaqData中为nil
  • 表格视图、数据源和委托在文件所有者中连接

标签: ios objective-c uitableview tableview nib


【解决方案1】:

您可以尝试将 tableView 作为强参考吗? 类似:

@property (nonatomic, strong) IBOutlet UITableView *tableView

【讨论】:

  • 我在上面尝试过,但没有任何改变。但是当我第三次连接数据源和委托并清理时,它突然工作了。我不知道究竟是什么问题,但感谢大家的帮助!
猜你喜欢
  • 1970-01-01
  • 2012-03-21
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 2019-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多