iPhone: UITextField ile hücrenin görünümü değiştirme

oy
0

commitEditingStyle: Temelde tableView üzerine bir UITableViewCell bir UITextField eklemek çalışıyorum forRowAtIndexPath :. ekin, ben mevcut hücrenin üzerinde bir UITextField eklemek istiyorum.

Ben kurulum Böyle bir şey textField:

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

Sonra commitEditingStyle içinde, ben bir şey gibi vardır:

- (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.
}

Ben takın erişimcisine (+) tıkladığınızda, textField gerçekten ekrana plopped, ancak bunu tıklanıyor hücrenin yakınındaki hiçbir yerde olsun demek. Bu UIView + tıklandığı de indexPath için değil, gerçek hücrenin rastgele parçası haline söner.

Nerede yanlış üzerine Insight ve nasıl + ideal olacaktır tıklanan hücrenin üzerine UITextField yerleştirebilirsiniz.

Oluştur 23/02/2009 saat 22:42
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
1

Sen çerçevesini ayarlıyorsunuz inputFieldistediğini yapmayacağım hücrenin çerçevesine. Hücre içinde Gösterim olarak çerçevenin üst sol kullanımı 0,0. Kişisel textfield çerçevesi olmalıdır:

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

o tamamen o hücrede diğer görünümleri kadar ele almış olduk textfield'ı yerleştirir Superview buna göreli olduğundan.

Cevap 23/02/2009 saat 22:50
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more