2014-02-08 2 views
0

У меня есть UITextField внутри пользовательской ячейки. У меня есть кнопка в viewController, что я бы хотел покраснеть, когда в ячейке есть текст в UITextField. Я создал такие кнопки, как UITextField в viewController, но не тогда, когда UITextView находится внутри ячейки. Как бы я это сделал.Получение информации от UITextField внутри ячейки

Вот как я бы сделал это UITextField был внутри ViewController -

- (void)textFieldDidChange:(id)sender { 

    if (self.schoolText.text.length > 0) { 
     self.navigationItem.rightBarButtonItem.tintColor = [UIColor redColor]; 
    }else{ 

     self.navigationItem.rightBarButtonItem.tintColor = [UIColor colorWithRed:193/255.5 green:193/255.0 blue:193/255.0 alpha:1.0]; 

    } 

} 

ответ

0

Вы можете использовать UITextFieldDelegate метод ниже, чтобы проверить длину

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

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

[textField.text stringByReplacingCharactersInRange:range withString:string].length

0

Чтобы было ясно, я предполагаю, что вы создали обычай UITableViewCell с UITextField, как это розетка с именем theTextField. и вы подключили UITextField в раскадровке к своей пользовательской ячейке.

теперь, когда вы заполнения данных в ячейку в -tableView: cellForRowAtIndexPath: вы должны сделать либо один из них:

, если вы хотите изменить цвет кнопки в тот момент, изменения текста, используйте:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChanged:) name:UITextFieldTextDidChangeNotification object:cell.theTextField]

в то время как textChanged: представляет собой метод, как это:

- (void) textChanged:(NSNotification *) notification

или если делегат достаточно просто использовать cell.theTextField.delegate = self;

вот это

Смежные вопросы