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 правильно доступен в проекте!

Другое дело, убедитесь, что вы правильно установили тег.

Другие вопросы по тегам