Вот один из способов сделать это.
Во-первых, присвойте своей кнопке «Обзор контактов» уникальные значения int для их свойства tag
при их создании (или в раскадровке, если вы используете раскадровки), чтобы вы могли различить их в своем getContactName:
методе.Я бы предложил установить tag = 0 для первой кнопки и tag = 1 для второй кнопки.
Затем добавить новое свойство в ваш класс ViewController, который будет хранить указатель на целевое текстовое поле после нажатия кнопки.,(Обязательно @synthesize в вашем файле .m)
@property (nonatomic, strong) UITextField *targetTextField;
В getContactName:
проверьте объект-отправитель и используйте его значение tag
для правильной установки указателя.(Обратите внимание, что отправителем будет объект UIButton, по которому щелкнул пользователь).
- (IBAction)getContactName:(id)sender {
...
switch(sender.tag) {
case 0:
self.targetTextField = self.contactName;
break;
case 1:
self.targetTextField = self.referredBy;
break;
default:
self.targetTextField = nil;
}
[self presentModalViewController:picker animated:YES];
}
Затем в fillContactName:
задайте текстовое значение для текстового поля в targetTextField, которое вы ранее установили.
- (void)fillContactName:(ABRecordRef)person
{
NSString* firstName = (__bridge_transfer NSString*)ABRecordCopyValue(person,kABPersonFirstNameProperty);
NSString* lastName = (__bridge_transfer NSString*)ABRecordCopyValue(person,kABPersonLastNameProperty);
self.targetTextField.text = [NSString stringWithFormat:@"%@ %@", firstName, lastName];
}
Обратите внимание, что я использовал * 109 * метод класса stringWithFormat:
, чтобы сделать ваш код fillContactName более кратким.Это часто используемый метод в подобных случаях.