-2

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

单元格 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
4

1 回答 1

1

You are passing to detail controller row number for allItems array, but it is not same that in displayItems

DVC.characterNumber = [indexPath row];

There is you should assing correct row from allItems array, not displayItems array

Update:

NSString *item = [displayItems objectAtIndex:indexPath.row;
DVC.characterNumber = [allItems indexOfObject:item];
于 2012-10-26T18:05:56.750 回答