2015-05-18 4 views
0

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

Когда камера нажата; метод didSelectRowAtIndexPath называется, однако я хочу узнать, какая часть ячейки была нажата; будь то правильный образ или левое изображение.

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

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 
    let touch = touches.first as! UITouch 
    let location = touch.locationInView(self) 
    var xcoord = location.x 
    touchPosition = xcoord 
} 

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

Здесь touchPosition - это глобальная переменная, и я пытался ее установить, чтобы получить доступ к ней в моем методе didSelectrowAtIndexPath, но он не срабатывает.

+0

подключить розетку к вашему Tableview и удалить переопределение –

+0

вы можете получить ячейку в didselect метода с использованием вара selectedCell = tableView.cellForRowAtIndexPath (indexPath) в UITableViewCell! – Amit89

+0

Вы должны называть 'super'. –

ответ

0

Установка свойства selected свойства ячейки внутри вашей функции touchesBegan должно сделать делегатский вызов didSelectRowAtIndexPath.

Если это не работает, вы можете попробовать это:

Создать weak var tableView: UITableView? в своем классе пользовательских ячеек. Также добавьте var indexPath: NSIndexPath, чтобы узнать путь индекса ячейки в вашем UITableViewCell. Затем при создании ячеек установите tableView в таблицу, а indexPath - на его указательный путь.

Теперь у вас есть ссылка на делегата таблицы. Так, в пользовательском классе клеток touchesBegan, вы можете вызвать tableView?.delegate?.tableView?(tableView, didSelectRowAtIndexPath: indexPath)

+0

Но вы не хотели бы этого делать в 'touchhesBegan'. Например, пользователь может отвести свой палец от вида, чтобы отменить касание. –

+0

О, право. Он может реализовать его в 'touchesEnded' и вычислить, если он находится на некотором безопасном расстоянии от вида, как в UIButton. Для 'touchhesBegan' он может просто проверить, было ли какое-либо изображение изначально нажато, а затем' touchesEnded' будет проверять, находится ли сенсорное местоположение на безопасном расстоянии. – chrisamanse

+0

Подумайте об этом, не будут ли функции 'touch' мешать прокрутке табличного вида? – chrisamanse

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