Как сделать так, чтобы текстовое поле выделялось каждый раз, когда вызывается функция делегата? - PullRequest
0 голосов
/ 28 мая 2009

Я использую такой код

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tv {
    return 3;
}

- (NSInteger)tableView:(UITableView *)tv numberOfRowsInSection:(NSInteger)section {
    if(section==2)
        return 20;
    else
        return 1;

}

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

    static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    //if (cell == nil)
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"MyIdentifier"]autorelease];

    // Configure the cell
    switch (indexPath.section) {
        case 0:
        {
            textField=[[[UITextField alloc]initWithFrame:CGRectMake(5, 10, 290, 70)]autorelease];
            textField.delegate=self;
            textField.keyboardType=UIKeyboardTypeURL;
            textField.autocorrectionType=YES;
            textField.textColor=[UIColor blackColor];
            textField.placeholder=@"Enter feed url";
            [cell.contentView addSubview:textField];
            break;
        }
        case 1:
        {
            textField1=[[[UITextField alloc]initWithFrame:CGRectMake(5, 10, 290, 70)]autorelease];
            textField1.delegate=self;
            textField1.keyboardType=UIKeyboardTypeURL;
            textField1.textColor=[UIColor blackColor];
            textField1.autocorrectionType=YES;
            textField1.placeholder=@"Enter starting url";
            [cell.contentView addSubview:textField1];
            break;
        }
        case 2:
        {
            cell.text=[[PopeularSiteArray objectAtIndex:indexPath.row]objectForKey:@"Title"];
            break;
        }
        default :
            break;

    }
    return cell;
}

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

Что я мог бы использовать здесь?

1 Ответ

0 голосов
/ 24 апреля 2010

Вы всегда должны хранить ссылку на элементы управления, которые вы добавляете в ячейки UITableView: UITextFiled, UISwitch и т. Д. Таким образом, вы можете взаимодействовать с элементом управления, а также легче получать / устанавливать значение. В противном случае вы должны найти правильную ячейку с помощью cellForRowAtIndexPath и попытаться получить дочерние элементы управления.

Чтобы решить вашу проблему:

  1. Добавьте textFieldFeedURL и textFieldStartingURL в качестве членов класса (в вашем файле .h).
  2. Выделите ОДИН РАЗ эти члены в viewDidLoad или cellForRowAtIndexPath
    if (textFieldFeedURL != nil) {
    textFieldFeedURL = [[UITextField alloc] initWithFrame:CGRectMake(5, 10, 290, 70)];
    }
  3. Добавьте текстовые поля в ячейки в cellForRowAtIndexPath с помощью addSubView.
  4. Освободить текстовые поля в dealloc.

Если ваше приложение имеет десятки элементов управления, вы можете сохранить ссылку в NSMutableArray.

Надеюсь, я хорошо понял ваш вопрос. Удачи!

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