目标c-表格视图无法在屏幕上显示数据

时间:2019-02-16 15:39:31

标签: ios objective-c iphone xcode tableview

我有一个数据数组。而且wr我的数据没有显示在屏幕上。不确定,我缺少什么。

@property NSMutableArray *NotifTotal;

@interface HomeVC ()<UITableViewDelegate, UITableViewDataSource>
@end

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [self.NotifTotal count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"FilterTableViewCell";
    FilterTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];


    NSDictionary *dict;
    dict = [self.NotifTotal objectAtIndex:indexPath.row];
    NSLog(@"%@", dict);  // data is coming.
    NSString* salt = [dict objectForKey:@"salt"];
    NSString* name = [dict objectForKey:@"Name"];
    NSLog(@"%@%@", name,swerk); // in console i can print the data
    cell.sLabel.text = [NSString stringWithFormat: @"%@", salt];
    cell.nLabel.text = [NSString stringWithFormat: @"%@", name];
    return cell;
}

为什么我的数据没有显示在屏幕上。我在屏幕上也添加了代表和数据源。任何解决方案?

3 个答案:

答案 0 :(得分:1)

您说过“我也在屏幕上添加了代理人,数据源”,但对我来说不是很清楚,您的意思是将HomeVC分别与UITableViewDelegateUITableViewDataSource一致您发布的代码,或者您实际上将UITableView的委托设置为HomeVC。因此,您应该检查以下内容:

  • 使用Interface Builder或以下代码将UITableView的数据源设置为HomeVC

    self.tableView.dataSource = self; // I am assuming self == HomeVC instance
    
  • 确保[self.NotifTotal count] > 0

  • 通过在cellForRowAtIndexPath上添加一个断点并确认它是否被调用,确保与UITableView的配置问题无关。

    • 如果不是,请返回上面的2点。
    • 如果是:这是UI问题,请检查单元格的高度是否接近0或它们是否具有透明颜色,等等。您可以使用Xcode的View Debugging工具来调试问题。

答案 1 :(得分:0)

由于您还没有提到注册单元标识符,因此我认为这就是问题所在。一种方法是在故事板或xib中。在表视图中选择原型单元,然后设置“标识符”字段(在Interface Builder的“属性”检查器窗格中)。将其设置为“ FilterTableViewCell”。

identifier field for a prototype cell

答案 2 :(得分:0)

这看起来像是xib问题。我在中间添加了一些代码。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"FilterTableViewCell";
FilterTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

//Add this part
if (cell == nil)
{
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"FilterTableViewCell" owner:self options:nil];
    cell = [nib objectAtIndex:0];
}
//end


NSDictionary *dict;
dict = [self.NotifTotal objectAtIndex:indexPath.row];
NSLog(@"%@", dict);  // data is coming.
NSString* salt = [dict objectForKey:@"salt"];
NSString* name = [dict objectForKey:@"Name"];
NSLog(@"%@%@", name,swerk); // in console i can print the data
cell.sLabel.text = [NSString stringWithFormat: @"%@", salt];
cell.nLabel.text = [NSString stringWithFormat: @"%@", name];
return cell;
}