-2

テーブルビューと検索バーを作成しました。

セル 1 の名前は iPhone です。

セル iPhone をクリックすると、詳細ビ​​ューで iPhone と表示されます。iPod を検索すると、検索リストの最初のセルになりましたが、これをクリックすると、iPod ではなく iPhone と表示されます。ここにすべてのコードを挿入してみます。

 - (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

allItems 配列の詳細コントローラーの行番号に渡していますが、displayItems の行番号とは異なります

DVC.characterNumber = [indexPath row];

displayItems 配列ではなく、allItems 配列から正しい行を割り当てる必要があります

アップデート:

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