我试图让我的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];
}
}
答案 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]出现方法以确保你没有第二次获取数据,并且做错了。