cell.contentView.viewWithTag дает нулевое значение при загрузке данных в UITableView
Я ожидаю события касания захваченного изображения в первой записи UITableView
когда пользователь нажимает I cell.imageAvtar
Я просто хочу запечатлеть это событие.
Это код, который я использую
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("details", forIndexPath: indexPath) as! AccountCell
if (indexPath.row == 0) {
(cell.contentView.viewWithTag(101) as! UIImageView).image = UIImage(named: "no_image_available.jpg")
}
return cell
}
Но (cell.contentView.viewWithTag(101)
возвращается как nil
.Я пытался (cell.contentView.viewWithTag(100)
попробовал (ячейка imageAvtar.viewWithTag(101) также.
3 ответа
Я использовал IBOutlets
как посоветовал Вадиан и Джртуртон.
Это рабочий код
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("details", forIndexPath: indexPath) as! AccountCell
if (indexPath.row == 0) { let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:Selector("imageTapped:"))
cell.imageAvtar.userInteractionEnabled = true
cell.imageAvtar.addGestureRecognizer(tapGestureRecognizer)
}
}
func imageTapped(img: AnyObject)
{
print("event captured")
//your logic comes here
}
Проверьте тэг imageView в конструкторе интерфейсов или раскадровке, если он равен 0, установите значение 101 и повторите попытку.
Вы также можете проверить
for subView in cell.contentView.subView {
print("subView tag --> \(subView.tag)!")
}
попробуйте это в вашем cellForRowAtIndexPath
Пытаться,
cell.viewWithTag(101)
или же self.view.viewWithTag(101)
если тег уникален (т.е. если вы не используете этот тег в другом месте).
Второе, что вы должны добавить gesture recognizer
захватить событие на нем. Как вы узнали, что он возвращается ноль? Может не вернуть ноль. Вы делаете другую ошибку. Удостоверься что no_image_available.jpg
правильно доступен в проекте!
Другое дело, убедитесь, что вы правильно установили тег.