从表格单元格的文本字段中获取文本

时间:2015-05-12 09:46:28

标签: ios objective-c uitableview uitextfield

我有一个带有UITextField自定义单元格。我应该在自定义单元格类或视图的类中设置delegate

我试图在两者中做到这一点,但没有结果。我从故事板中设置了委托。

这是我做的:

-(void)textViewShouldReturn:(UITextField *)textField
{
    if ([textField.text isEqualToString:@""]){
        return;
    }

    UIAlertView *helloEarthInputAlert = [[UIAlertView alloc]
                                         initWithTitle:@"Name!" message:[NSString stringWithFormat:@"Message: %@", textField.text]
                                         delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];


    [helloEarthInputAlert show];

}

但如果我把这个单元格放在这一部分.noteTextField.delegate = self:

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{

    self.tableView.frame=CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y-30, self.tableView.frame.size.width, self.tableView.frame.size.height);
    return YES;
}

2 个答案:

答案 0 :(得分:1)

在自定义单元格的类中添加委托。但不要忘记实施协议

// MyCell.h

@interface MyCell : UITableViewCell <UITextFieldDelegate>
// ...

// MyCell.m

-(void)autoconfigureCell // a method I added to configure cell, but also can do in "-(void)layoutSubviews"
{
    // ...
    myTextField.delegate = self;
    // ...
}

-(BOOL)textFieldShouldReturn:(UITextField *)textField // <-- BOOL
{
    // do stuff

    return YES;
}

答案 1 :(得分:0)

您应该在ViewController中设置委托,它必须实现UITextFieldDelegate并知道调用委托方法的文本字段,您可以这样做:

-(void)textViewShouldReturn:(UITextField *)textField
{
    CGPoint textFieldPosition = [textField convertPoint:CGPointZero toView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:textFieldPosition];
    ...
}