Как выбрать и отметить строку после загрузки в UITableview - PullRequest
0 голосов
/ 05 августа 2011

У меня есть выбор, который выберет только 1 строку категории.но мне бы хотелось выбрать строку «Духи» при загрузке.

Примерно так:

enter image description here

На данный момент это происходит без выбора чего-либо:

enter image description here

Где мне сделать сравнение для того, чтобы оно было selectRowAtIndexPath?

// Настроить внешний вид ячеек табличного представления.

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

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }


    categoryString = [arrayCategory objectAtIndex:indexPath.row];
    cell.textLabel.text = categoryString;
    if (cell.textLabel.text == categoryString) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }
    else {
        cell.accessoryType = UITableViewCellAccessoryNone;

    }

    return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell* newCell = [tableView cellForRowAtIndexPath:indexPath];
    int newRow = [indexPath row];
    int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1;

    if(newRow != oldRow)
    {
        newCell.accessoryType = UITableViewCellAccessoryCheckmark;
        newCell.highlighted =YES;
        UITableViewCell* oldCell = [tableView cellForRowAtIndexPath:lastIndexPath];
        oldCell.accessoryType = UITableViewCellAccessoryNone;
        lastIndexPath = indexPath;
        oldCell.highlighted = NO;

    }
    [tableView deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:YES];
}

Ответы [ 2 ]

1 голос
/ 05 августа 2011

Используйте selectRowAtIndexPath: animated: scrollPosition: метод для программного выбора строки.

Несколько вещей, которые нужно исправить в вашем коде.Вы должны использовать isEqualToString: метод для сопоставления строк, например, if ([cell.textLabel.text isEqualToString:categoryString]) {.Следующее, вы присваиваете categoryString для cell.textLabel.text, и на следующей строке вы сопоставляете их, поэтому всегда будет возвращаться YES.Я думаю, что вы используете неправильные значения.

0 голосов
/ 05 августа 2011

Вы должны вручную установить несколько галочек. для этого вы можете использовать UIImageview для каждого UITableViewCell и, согласно сохраненным старым данным, вы должны установить галочки в didSelectRowAtIndexPath (метод делегата UITableView).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...