2016-04-19 7 views
0

Ich versuche, den UIButton-Titeltext zu ändern, aber es funktioniert nicht. Ich habe es in einer UITableView. Dies ist, wie es aussieht:Ändern Schaltfläche Titel Text wird nicht funktionieren

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     let imageCell = tableView.dequeueReusableCellWithIdentifier("imageCell", forIndexPath: indexPath) as! StoryCell 
     let videoCell = tableView.dequeueReusableCellWithIdentifier("videoCell", forIndexPath: indexPath) as! StoryCell 
     let blankCell = tableView.dequeueReusableCellWithIdentifier("blankCell", forIndexPath: indexPath) as! StoryCell 

     if (userFile[indexPath.item].url!.rangeOfString(".jpeg") != nil) { 
      print("imageCell: \(userFile[indexPath.row].url)") 

      imageCell.viewstoryButton.setTitle("Vis bildeeee - \(self.createdAt[indexPath.row].timeAgo)", forState: UIControlState.Normal) 
      imageCell.viewstoryButton.titleLabel?.textColor = UIColor.redColor() 

      return imageCell 
     } 
     if (userFile[indexPath.row].url!.rangeOfString(".mp4") != nil) { 
      print("videoCell: \(userFile[indexPath.row].url)") 

      videoCell.viewstoryButton.setTitle("Vis video - \(self.createdAt[indexPath.row].timeAgo)", forState: UIControlState.Normal) 

      return videoCell 
     } 
     else{ 
      print("blankCell") 
      return blankCell 
     } 

    } 

Und ich habe drei Prototyp-Zellen: imageCell, videoCell und blankCell.

Sie sind alle mit StoryCell verbunden, und die Schaltflächen werden angezeigt, aber der Text oder die Farbe ändert sich nicht. Irgendwelche Ideen?

+0

diese Tasten sind sichtbar in der Zelle bei der Ausführung Anwendung namens benutzerdefinierter Zellenbibliothek verbunden sind ? und hast du überprüft, ob dein if Block anruft oder nicht? – Lion

+1

Richten Sie Haltepunkte ein, um zu sehen, ob diese Zeilen aufgerufen werden. Ist es auch möglich, dass reloadData mit der Art, wie Ihr Code fließt, benötigt wird? –

+0

@Lion Ja, sie sind sichtbar - und ja der if Block ruft auf, weil er sowohl von imageCell als auch videoCell ausgibt - aber irgendwas ist komisch. Sehen Sie in dieser Spalte in Parse hier: http://i63.tinypic.com/1zd7lzc.jpg, es enthält zwei Bilder und ein Video, aber wenn ich meine Anwendung ausführen, zeigt es zwei Tabellenansicht Videozellen, und eine Bildzelle .. Irgendwelche Hinweise? –

Antwort

0

Stellen Sie sicher, Ihre Tasten auch auf Ihre Swift-Datei als Steckdose angeschlossen werden

+0

Die Schaltflächen werden in einer anderen Cocoa-Klasse für die Zelle hinzugefügt: 'StoryCell.swift' –

+0

in Story Cell.Swift fügt Outlets für Buttons hinzu. und in cellForRowAtIndexPath implementieren den wechselnden Titel –

0

Wie auf der offiziellen apple doc die korrekte Syntax erklären ist:

setTitle (_ title: String ?, forState Zustand : UIControlState)

Und für die Titlelabel doc sagen:

titelLabel: UILabel? {get}

Ihr Syntaxcode war also korrekt.

Sie können prüfen, ob reload() aufgerufen wird und auch wenn Ihre IBOutlet Tasten richtig an die „StoryCell“

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     var imageCell = tableView.dequeueReusableCellWithIdentifier("imageCell", forIndexPath: indexPath) as! StoryCell 
     if imageCell == nil { 
      imageCell = StoryCell(style: UITableViewCellStyle.Default, reuseIdentifier: ("imageCell")) 
     } 

     var videoCell = tableView.dequeueReusableCellWithIdentifier("videoCell", forIndexPath: indexPath) as! StoryCell 
     if videoCell == nil { 
      videoCell = StoryCell(style: UITableViewCellStyle.Default, reuseIdentifier: ("videoCell")) 
     } 

     var blankCell = tableView.dequeueReusableCellWithIdentifier("blankCell", forIndexPath: indexPath) as! StoryCell 
     if blankCell == nil { 
      blankCell = StoryCell(style: UITableViewCellStyle.Default, reuseIdentifier: ("blankCell")) 
     }   

     if (userFile[indexPath.item].url!.rangeOfString(".jpeg") != nil) { 
      print("imageCell: \(userFile[indexPath.row].url)") 

      imageCell.viewstoryButton.setTitle("Vis bildeeee - \(self.createdAt[indexPath.row].timeAgo)", forState: UIControlState.Normal) 
      imageCell.viewstoryButton.titleLabel?.textColor = UIColor.redColor() 

      return imageCell 
     } 
     if (userFile[indexPath.row].url!.rangeOfString(".mp4") != nil) { 
      print("videoCell: \(userFile[indexPath.row].url)") 

      videoCell.viewstoryButton.setTitle("Vis video - \(self.createdAt[indexPath.row].timeAgo)", forState: UIControlState.Normal) 

      return videoCell 
     } 
     else{ 
      print("blankCell") 
      return blankCell 
     } 

    } 
Verwandte Themen