#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
?