Не удается начать вызов при нажатии кнопки в UITableViewCell

#iphone #uitableview #uibutton #call

#iPhone #uitableview #uibutton #вызов

Вопрос:

В каждой ячейке моего tableview есть кнопка. Я хочу набрать номер при нажатии кнопки. Раньше я использовал вызов из кода подобным образом:

 NSString *cifra1=@"tel://";
NSString *cifra=customer.tel;     
cifra1 = [cifra1 stringByAppendingString:cifra];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:cifra1]];
  

Если я помещу этот код в метод «didSelectRowAtIndexPath», все заработает. Но если я вставлю ее -(IBAction)buttonPressed:(UIButton *) sender , ничего не произойдет. Я проверил этот метод с помощью NSLog, и он реагирует на нажатия кнопок.

Что не так?

РЕДАКТИРОВАТЬ: Странно, это работает:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


NSString *cifra1=@"tel://";
NSString *cifra=@"123456789";
cifra1 = [cifra1 stringByAppendingString:cifra];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:cifra1]];
  

}

и этого не происходит, даже если номер клиента считывается правильно:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

Customer *c=[customerArray objectAtIndex:indexPath.row];

NSString *cifra1=@"tel://";
NSString *cifra=c.tel;
cifra1 = [cifra1 stringByAppendingString:cifra];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:cifra1]];
  

}

Комментарии:

1. Как вы получаете номер телефона, т.е. customer.tel . Отличается ли он в разных строках? Если да, то как ссылаться на это из -buttonPressed: метода.

2. Можете ли вы показать полный код didSelectRowAtIndexPath, чтобы я мог сказать, что не так в (IBAction)buttonPressed:(UIButton *) отправителе

3. @Deepak: Я записал номер с custoemr.tel когда кнопка нажата и все в порядке, я получаю правильный номер.

4. Можете ли вы опубликовать оба метода? Кажется странным, что это работает одним методом, а не другим.

Ответ №1:

Вызывается ваша кнопка, нажатая?

Попробуйте добавить NSLog(@"%s", __FUNCTION__);

Попробуйте использовать id вместо UIButton:

 -(IBAction)buttonPressed:(id) sender
  

Ответ №2:

(IBAction)buttonPressed:(UIButton *) отправитель

измените его как (IBAction)buttonPressed:(id) отправитель

Ответ №3:

Убедитесь, что вы установили целевой параметр кнопки с addTarget:action:withObject:forControlEvents:

Комментарии:

1. buttonPressed успешно вызван, проблема не здесь.

Ответ №4:

Сделайте это

 NSString *cifra = [[c.tel copy] autorelease];
  

Я подозреваю, что вы используете core data.

Комментарии:

1. Это не помогает, и я не использую core data. Работает только создание строкового литерала с помощью NSString *cifra=@»123456789″ . Я не понимаю.

2. чему равно значение cifra1 перед openURL: ? Можете ли вы проверить с помощью NSLog ?