2010-11-04 53 views
0

我有一個帶有一個筆尖的viewcontroller - 裏面有一個tableview,searchbar和searchdisplaycontroller。tableView:cellForRowAtIndexPath:使用搜索欄時未調用

searchdisplaycontroller的contentscontroller,結果委託,委託和結果數據源連接到IB中的viewcontroller。搜索欄的代表連線到IB的視圖控制器。主表視圖也在運行時正確連接到視圖控制器及其加載項目。

除了resultstableview之外,一切似乎都能正常工作 - 它永遠不會被填充,tableView:cellForRowAtIndexPath:永遠不會在用戶鍵入搜索欄後被調用 - 它只會被調用來填充主表視圖。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"CellIdentifier"; 

    // Dequeue or create a cell o f the appropriate type. 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    if (tableView.tag == 2) 
    { 
     cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 

     // Configure the cell. 
     NSHotel *selectedHotel = [[self hotelList] objectAtIndex:[indexPath row]]; 

     //Store the hotel id for use later 
     selectedHotel.id = [indexPath row]; 

     //cell.textLabel.text = [NSString stringWithFormat:@"Catalonia Majorica", indexPath.row]; 
     cell.textLabel.text = [selectedHotel name]; 
    } 
    else if (tableView.tag == 1) 
    { 
     cell.accessoryType = UITableViewCellAccessoryNone; 

     // Configure the cell...  
     NSAirport *selectedAirport = nil; 

     if (tableView == self.searchDisplayController.searchResultsTableView) 
     { 
      selectedAirport = [self.filteredListContent objectAtIndex:indexPath.row]; 
     } 
     else 
     { 
      selectedAirport = [self.listContent objectAtIndex:indexPath.row]; 
     } 

     //Set the label of the cell formatting the distance from the device 
     cell.textLabel.text = [NSString stringWithFormat:@"%@ - %@ miles", 
           selectedAirport.name, [self formattedStringWithDecimal:selectedAirport.milesFromDevice]]; 

     //Adjust the front of the label 
     cell.textLabel.font = [UIFont boldSystemFontOfSize:12]; 

    } 

    return cell; 
} 

回答

1

固定它 - 它是在這裏返回0:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    { 
     if (tableView == self.searchDisplayController.searchResultsTableView) 
     { 
      return [self.filteredListContent count]; 
     } 
     else if (tableView.tag == 1) 
     { 
      return [self.listContent count]; 
     } 
     else if (tableView.tag == 2) 
     { 
      // Return the number of rows in the section. 
      return [[self hotelList] count]; 
     } 

     NSLog(@"The rows in tableview!"); 
     return 0; 
    }