2016-08-20 4 views
0

Ich bin auf der Suche nach erfassten Tap-Ereignis auf dem ersten Datensatz von UITableView, wenn Benutzer tippt ich cell.imageAvtar Ich möchte nur dieses Ereignis erfassen.cell.contentView.ViewWithTag gibt keinen Wert beim Laden von Daten in UITableView

Dies ist der Code, den ich

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 
} 

Aber (cell.contentView.viewWithTag(101) .I wie nil bin mit haben (cell.contentView.viewWithTag(100) versucht versucht zurückkehrt (Zelle. ImageAvtar.viewWithTag (101) als auch.

+2

Da die Zelle benutzerdefinierte sowieso, warum Sie Tags verwenden Sie statt IBOutlets? – vadian

+1

Was @vadian sagte. Tags sind nutzlos und zerbrechlich. Verwenden Sie Steckdosen oder Eigenschaften. – jrturton

Antwort

0

Ich habe IBOutlets als vadian und jrturton beraten.

Dies ist der Arbeitscode

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 
     } 
0

Ihre Imageview des Tags überprüfen in Interface Builder oder Storyboard, wenn es 0 ist es 101 machen und versuchen Sie es erneut ..

Sie auch

überprüfen

versuchen Sie dies in Ihrem cellForRowAtIndexPath

0

Versuchen,

cell.viewWithTag(101) oder self.view.viewWithTag(101) if-Tag einzigartig ist (d. wenn Sie dieses Tag nicht an einem anderen Ort verwenden).

Zweite Sache, die Sie gesture recognizer hinzufügen müssen, um Ereignis zu erfassen. Wie kommst du darauf, dass es keine Antwort gibt? Es kann nicht Null zurückgeben. Du machst einen weiteren Fehler. Stellen Sie sicher, dass no_image_available.jpg im Projekt verfügbar ist!

Eine andere Sache ist, stellen Sie sicher, dass Sie Tag richtig eingestellt haben.

+0

'no_image_available.jpg' ist verfügbar. Ich habe versucht, 'if (cell.contentView.viewWithTag (101))! = Nil { print ("Bild gefunden") } else { print ("somethign ging schief") }' Auch weder ' cell.viewWithTag (101) 'noch' self.view.viewWithTag (101) 'half – onkar