2016-04-19 2 views
0

Я пытаюсь изменить текст заголовка UIButton, но он не работает. У меня это в UITableView. Это то, что он выглядит следующим образом:Изменить название статьи текст не работает

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 
     } 

    } 

И у меня есть 3 прототипа клетки: imageCell, videoCell и blankCell.

Все они подключены к StoryCell, и появятся кнопки, но текст или цвет не изменится. Есть идеи?

+0

эти кнопки видны в ячейке при запуске приложения ? и проверяете ли вы, что ваши блокируют или нет? – Lion

+1

Установите контрольные точки, чтобы увидеть, вызываются ли эти линии. Также возможно, что reloadData может понадобиться с тем, как ваш код протекает? –

+0

@Lion Да, они видны - и да, если блокируют вызовы if, потому что они распечатывают оба из imageCell и видеоCell - Но что-то странно. Вы видите в этом столбце в разделе «Анализ» здесь: http://i63.tinypic.com/1zd7lzc.jpg, он содержит два изображения и одно видео, но когда я запускаю свое приложение, он показывает две ячейки для просмотра в виде таблицы, а один ячейка изображения. Любые подсказки? –

ответ

0

Убедитесь, что кнопки также подключены к Swift файлу как выход

+0

Кнопки добавляются в другой класс Cocoa для ячейки: 'StoryCell.swift' –

+0

в Story Cell.Swift добавить выходные для кнопок. и в cellForRowAtIndexPath реализовать изменяющийся заголовок –

0

Как объяснить на официальный apple doc правильного синтаксиса:

SETTITLE (_ названия: String ?, Форстата состояния : UIControlState)

И titleLabel doc говорят:

titleLabel: UILabel? {get}

поэтому, ваш синтаксический код был верным.

Вы можете проверить, если reloadData() вызывается, а также если ваши IBOutlet кнопки правильно подключены к библиотеке пользовательских ячейки под названием «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 
     } 

    }