UITableView 单元格不显示正确的详细信息

Posted

技术标签:

【中文标题】UITableView 单元格不显示正确的详细信息【英文标题】:UITableView cell not display correct detail 【发布时间】:2012-10-26 13:02:59 【问题描述】:

我创建了表格视图和搜索栏。

单元格 1 的名称是 iPhone。

当我单击单元格 iPhone 时,在详细视图中它会写入 iPhone。当我搜索 iPod 时,它成为搜索列表中的第一个单元格,但是当我单击它时,它写的是 iPhone 而不是 iPod。我尝试在此处插入所有代码。

 - (BOOL)shouldAutootateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    
    // Return YES for supported orientations
   return (interfaceOrientation == UIInterfaceOrientationPortrait);
      

     #pragma  mark - Table View Methods


    - (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView



    return 1;
  
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section      
  return [displayItems count];
       


   - (UITableViewCell *)tableView:(UITableView *)aTableView       cellForRowAtIndexPath:(NSIndexPath *)indexPath 
   static NSString *cellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];



cell.textLabel.text = [displayItems objectAtIndex:indexPath.row];


return cell;

 

 -(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText

if ([searchText length] == 0) 
    [displayItems removeAllObjects];
    [displayItems addObjectsFromArray:allItems];

 else 

    [displayItems removeAllObjects];
    for (NSString * string in allItems )
        NSRange r =[string rangeOfString:searchText options:NSCaseInsensitiveSearch];

        if (r.location != NSNotFound)
            [displayItems addObject:string];
        
    

    [tableView reloadData];

    

  





   -(void)searchBarSearchButtonClicked:(UISearchBar *)asearchBar 

   [searchBar resignFirstResponder];



      


    - (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath
return UITableViewCellAccessoryDisclosureIndicator;
    


       - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath



      
   DetailViewController *DVC = [[DetailViewController alloc] init];

   //Pass the row to the DVC


DVC.characterNumber = [indexPath row];

//Push the DetailViewController object onto the stack

[self.navigationController pushViewController:DVC animated:YES];



 
 @end

【问题讨论】:

我们需要更多细节。将您使用的代码发布到 didSelectRowAtIndexPath 中,如果您使用 Storyboards,我们还需要您实现的 prepareForSegue 方法。 【参考方案1】:

您将传递给 allItems 数组的详细控制器行号,但它与 displayItems 中的不同

DVC.characterNumber = [indexPath row];

你应该从 allItems 数组中获取正确的行,而不是 displayItems 数组

更新:

NSString *item = [displayItems objectAtIndex:indexPath.row;
DVC.characterNumber = [allItems indexOfObject:item];

【讨论】:

以上是关于UITableView 单元格不显示正确的详细信息的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 单元格内容未正确显示

UITableView 自定义单元格不显示数据

从笔尖加载的 UITableView 单元格不显示背景颜色

UITableView 的 scrollToRowAtIndexPath 在单元格不显示时不起作用?

滚动时如何使uitableview单元格不改变?

自动调整嵌入在 UITableView 中的 UICollectionView 单元格不起作用