2016-02-12 2 views
0

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

Я использую UITableView внутри UIViewController. У меня есть пользовательский UITableViewCell, в котором есть несколько кнопок. Тем не менее, я не могу заставить Button отвечать на событие Click.

Среда разработки является IOS, 9 и Свифт 2

Snippets используемым:

BranchNearMeTableViewCell.swift содержит

@IBOutlet weak var btnDetails: UIButton! 

класса вида Контроллера

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("branchNearTableCell") as! BranchNearMeTableViewCell 

cell.btnDetails.tag = indexPath.row 
     cell.btnDetails.addTarget(self, action: "showDetails:", forControlEvents: .TouchUpInside) 

} 

func showDetails(sender: UIButton){ 

     print("Button Pressed:") 
    } 

Дополнительной информации:

TableView и TableCellView отключили взаимодействие пользователя в построителе интерфейса, так как не хотят, чтобы вся ячейка была доступна для кликов.

UIButton внутри TableViewCell включает взаимодействие с пользователем.

Будучи iOS noob, я могу совершить глупую ошибку, которую я мог упустить.

Подобные вопросы, которые я проверил включают:

SO1

SO2

SO3

Я глубоко признателен за любую помощь по этому вопросу.

+1

позволяют пользователю и нажмите ячейку в раскадровке. Есть параметр под названием «Выбор» и установите его «Нет». –

+0

Для чего все элементы управления должны применяться? Tableviewcell и кнопка? – user2695433

+2

Все должно включать взаимодействие с пользователем. Затем выберите ячейку просмотра таблицы и отключите атрибут ** selection **. –

ответ

2

У меня было бы userInteractionEnabled, установленное на true на вид таблицы, а также. Я бы предотвратить краны с помощью UITableViewallowsSelection к false

Также не забудьте удалить цель и действие в tableView:cellForRowAtIndexPath:, так как клетки перерабатываются, кнопка может уже иметь цель и действие, он может добавить второй.

+0

Спасибо Кайл, не могли бы вы предложить, где было бы лучшим местом для записи цели и действия, кроме tableVIew: cellForRowAtIndexPath? – user2695433

+1

Создайте IBOutlet с помощью кнопки раскадровки, как и любая другая кнопка –

0

Ad a first sight ничего не кажется неправильным с вашим кодом.
Итак, я предлагаю вам добавить цвет фона в супервизор кнопки, почему? потому что, если кнопка находится за рамкой своего супервизора, она никогда не получит штрихов.
Если вы видите, что кнопка не внутри цвета фона, возможно, у вас есть проблема с позиционированием элемента, проверки ограничений или того, что вы используете. Проверьте также рамку кнопки.
Вы также можете сделать это, просмотрев представление во время выполнения, here учебное пособие.

+0

Спасибо Andrea, попробовал ваше предложение, добавив цвет фона, кнопка расположена внутри цвета супервизора. – user2695433

0

Я не знаю, что неправильно в коде, но я могу предложить, которые я лично использую, и она работает для меня

В BranchNearMeTableViewCell.скор

@IBOutlet var btnDetails: UIButton! 
@IBAction func btnDetailsClick(sender: AnyObject) { 
    tapButton?(self) 
} 
var tapButton: (UITableViewCell -> Void)? 

В контроллере представления Таблица

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("branchNearTableCell") as! BranchNearMeTableViewCell 

cell.tapButton = {(user) in 
      //User will be tablecell here do whatever you want to do here 
     } 

} 

Так что, если вы нажмете на кнопку в ячейке таблицы это cell.tapButton будет называться вы можете делать все, что вы хотите сделать здесь

+0

Пробовал без успеха :(спасибо – user2695433

+0

Могу ли я узнать, какие все свойства, которые вы включили и отключили в дизайне, такие как взаимодействие с пользователем и выбор для TableView и TableViewCell – user2695433

+0

взаимодействие с пользователем включено по умолчанию для кнопки, и если взаимодействие с кнопкой включено, оно должно работать независимо of tableviewproperties –

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