цель c - табличное представление не в состоянии показать данные на экране - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть массив данных.И мои данные не отображаются на экране.Не уверен, что мне не хватает.

@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 голосов
/ 16 февраля 2019

Вы сказали: «Я добавил делегата, источник данных также на моем экране», но мне не очень понятно, что вы имели в виду соответствие ваших HomeVC UITableViewDelegate и UITableViewDataSource как вашего отправленного кода, или вы на самом делеустановите делегата вашего UITableView на HomeVC.Итак, вот что вы должны проверить:

  • Установите для источника данных вашего UITableView значение HomeVC, используя Interface Builder или следующий код:

    self.tableView.dataSource = self; // I am assuming self == HomeVC instance
    
  • Убедитесь, что [self.NotifTotal count] > 0.

  • Убедитесь, что речь не идет о проблеме конфигурации UITableView, добавив точку останова к cellForRowAtIndexPath и подтвердите, что она вызвана.

    • Если это не так: вернитесь на 2 пункта выше.
    • Если это так: это проблема пользовательского интерфейса, давайте проверим, близка ли высота ваших ячеек к 0 или они имеют прозрачный цвет и так далее.Вы можете использовать Xcode View Debugging tool для устранения проблемы.
0 голосов
/ 22 февраля 2019

Это похоже на проблему 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;
}
0 голосов
/ 16 февраля 2019

Поскольку вы еще не упомянули о регистрации идентификатора ячейки, я полагаю, что это проблема.Один из способов сделать это в вашей раскадровке или XIB.Выберите ячейку прототипа в табличном представлении и установите поле «идентификатор» (на панели инспектора Атрибутов Интерфейсного Разработчика).Установите для него «FilterTableViewCell».

identifier field for a prototype cell

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...