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 单元格不显示正确的详细信息的主要内容,如果未能解决你的问题,请参考以下文章