iPhone: замена представления ячейки на UITextField - PullRequest
0 голосов
/ 24 февраля 2009

Я в основном пытаюсь добавить UITextField в UITableViewCell по tableView: commitEditingStyle: forRowAtIndexPath :. При вставке я хочу добавить UITextField поверх существующей ячейки.

Я установил textField примерно так:

-(void) setUpIndexField {
    inputField = [[UITextField alloc] init];
    inputField.textAlignment = UITextAlignmentCenter;
    inputField.borderStyle = UITextBorderStyleRoundedRect;    
    inputField.keyboardType = UIKeyboardTypeNamePhonePad;
    inputField.delegate = self;
 }

Тогда в commitEditingStyle у меня есть что-то вроде:

- (void)tableView:(UITableView *)tv
    commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
    forRowAtIndexPath:(NSIndexPath *)indexPath 
{
    NSInteger row = [indexPath row];
    if (editingStyle == UITableViewCellEditingStyleInsert) {
    if (row == 0) {
        UITableViewCell *cell = [tv cellForRowAtIndexPath:indexPath];
        inputField.frame = [tv cellForRowAtIndexPath:indexPath].frame;
        [cell.contentView addSubview:inputField];
        [inputField becomeFirstResponder];
        return;
    }
// more code etc.
}

Когда я нажимаю на аксессор Вставка (+), textField действительно появляется на экране, но не рядом с ячейкой, которая его щелкает. Он попадает в случайную часть UIView, а не в фактическую ячейку для indexPath, в которой был нажат значок +.

Идея о том, где я ошибся и как я могу поместить UITextField в ячейку, в которой был нажат значок +, будет идеальной.

1 Ответ

1 голос
/ 24 февраля 2009

Вы устанавливаете кадр inputField на кадр ячейки, который не будет делать то, что вы хотите. Виды внутри ячейки используют верхний левый угол рамки как 0,0. Ваш текстовое поле должно быть:

inputField.frame = CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height);

Поскольку это относительно суперпредставления, которое разместит текстовое поле, оно полностью закроет другие представления в этой ячейке.

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