Установка субтитров в ячейке поиска - PullRequest
1 голос
/ 04 июля 2011

Я циклически перебираю данные, но в этих данных они имеют два одинаковых имени, но оба имеют разные подтемы (которые, как предполагается, являются субтитрами).Таким образом, результаты поиска показывают оба имени с одинаковыми субтитрами, когда они должны иметь разные субтитры, так как они имеют разные подтемы.

Я думал, что следующий код будет работать, но это не так, и я не уверен, чтоЯ делаю неправильно.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *kCellID = @"cellID";
static NSString *cellIdentifier = @"myCellIdentifier";

// if search is active display cell with subtitles otherwise display default
if (tableView == self.searchDisplayController.searchResultsTableView) {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier] autorelease];
        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.textLabel.numberOfLines = 0;
    }
    cell.textLabel.text = [self.searchFilteredListContent objectAtIndex:indexPath.row];

    for(id obj in data){
        if ([[obj valueForKey:@"name"] isEqualToString:[self.searchFilteredListContent objectAtIndex:indexPath.row]]) {
            NSLog(@"%@",[obj valueForKey:@"subTopic"]);
            cell.detailTextLabel.text = [obj valueForKey:@"subTopic"];
        }
    }

    return cell;

}else{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellID];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCellID] autorelease];
    }
    cell.textLabel.text = [self.topics objectAtIndex:indexPath.row];
    return cell;
}

}

NSLog(@"%@",[obj valueForKey:@"subTopic"]) показывает правильные подтемы, но не отображает эти результаты в субтитрах в представлении таблицы поиска.

Спасибо за вашу помощь!

Ответы [ 2 ]

3 голосов
/ 04 июля 2011

Убедитесь, что вы используете соответствующий UITableViewCellStyle с этим (все, кроме UITableViewCellStyleDefault должно работать). Стиль ячейки указывается при ее инициализации.

        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
1 голос
/ 04 июля 2011

Вы используете один и тот же идентификатор ячейки для двух разных типов ячеек, что может вызвать некоторые проблемы при их удалении из очереди, вам следует использовать 2 разных идентификатора ячейки.

Кроме того, вы должны выйти из цикла:

    for(id obj in data){
    if ([[obj valueForKey:@"name"] isEqualToString:[self.searchFilteredListContent objectAtIndex:indexPath.row]]) {
        NSLog(@"%@",[obj valueForKey:@"subTopic"]);
        cell.detailTextLabel.text = [obj valueForKey:@"subTopic"];
        break;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...