UITableViewCell textLabel不显示文本

时间:2014-09-09 00:43:58

标签: ios objective-c uitableview

我试图让我的UITableViewCell在其textLabel中显示正确的文本,但到目前为止还没有显示任何文本。我已尝试NSLOG数组,以确保它有数据,它确实。我已经尝试通过数组并从我正在获取的Core Data实体的每个条目中打印文本,然后我找回了我想要的文本。当谈到在单元格中显示所有信息时没有任何反应。我还注意到也没有调用cellForRowAtIndexPath方法。

以下是从UIAlertView按钮开始转换视图的方式。

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    NSString *title = [alertView buttonTitleAtIndex:buttonIndex];

    if ([title isEqualToString:@"Corp"]){
        DeckBuilderTableViewController *deckBuilder = [[DeckBuilderTableViewController alloc]init];
        [deckBuilder fetchCorpCards];
        [self performSegueWithIdentifier:@"deckBuilder" sender:self];
    }

    if ([title isEqualToString:@"Runner"]){
        DeckBuilderTableViewController *deckBuilder = [[DeckBuilderTableViewController alloc]init];
        [deckBuilder fetchRunnerCards];
        [self performSegueWithIdentifier:@"deckBuilder" sender:self];
    }
}

这是cellForRowAtIndexPath方法。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"cellForRowAtIndexPath called");
    NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    // Configure the cell...
    if (self.corpCardsSelected == YES){
        CorpCard *corpCards = [self.datasource objectAtIndex:indexPath.row];
        cell.textLabel.text = corpCards.title;
    }

    if (self.runnerCardsSelected == YES){
        RunnerCard *runnerCards = [self.datasource objectAtIndex:indexPath.row];
        cell.textLabel.text = [NSString stringWithFormat:@"%@", runnerCards.title];
    }

    return cell;
}

编辑:

这是委托方法

- (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 self.datasource.count;

}

我现在注意到的问题是数据源数组将记录其内容,但numberOfRowsInSection返回的计数为0.

以下是视图的启动和转换方式。此代码来自最初的viewController。

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    NSString *title = [alertView buttonTitleAtIndex:buttonIndex];

    if ([title isEqualToString:@"side1"]){
        DeckBuilderTableViewController *deckBuilder = [[DeckBuilderTableViewController alloc]init];
        [deckBuilder fetchSide1Cards];
        [self performSegueWithIdentifier:@"deckBuilder" sender:self];
    }

    if ([title isEqualToString:@"side2"]){
        DeckBuilderTableViewController *deckBuilder = [[DeckBuilderTableViewController alloc]init];
        [deckBuilder fetchSide2Cards];
        [self performSegueWithIdentifier:@"deckBuilder" sender:self];
    }
}

3 个答案:

答案 0 :(得分:0)

如果cellForRowAtIndexPath未被调用,可能是因为delegate未正确设置,您似乎拥有或部分和/或行数不正确。 确保在这些方法中返回正确的值:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
//should return at least 1

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
//should return at least 1

答案 1 :(得分:0)

您的dataSource和delegate outlet应设置为表视图控制器,而不是表视图。

答案 2 :(得分:0)

由于您的数据源在一个点处有计数,但在另一个点处有0,因此很明显您将其归零。检查你的视图[Will | Did]出现方法以确保你没有第二次获取数据,并且做错了。