2017-01-09 3 views
0

Я загружаю новости с сервера в таблицуView. Теперь я хочу создать пользовательскую ячейку с заголовком, изображением и выдержкой. Я создал собственный класс для ячейки, и я дал пользовательский идентификатор ячейки. Я положил две метки (один для заголовка и один для выдержки). Теперь я просто хочу отображать заголовок в первом ярлыке и выдержку во втором ярлыке.Как заполнять пользовательскую ячейку tableView в Swift 3?

 @IBOutlet weak var headline: UILabel! 

     @IBOutlet weak var excerpt: UILabel! 

//Custom struct for the data 
struct News { 
    let title : String 
    let text : String 
    let link : String 
    let imgUrl : String 

    init(dictionary: [String:String]) { 
     self.title = dictionary["title"] ?? "" 
     self.text = dictionary["text"] ?? "" 
     self.link = dictionary["link"] ?? "" 
     self.imgUrl = dictionary["imgUrl"] ?? "" 
    } 
} 

//Array which holds the news 
var newsData = [News]() 

// Download the news 
func downloadData() { 
    Alamofire.request("https://api.sis.kemoke.net/news").responseJSON { response in 
     print(response.request) // original URL request 
     print(response.response) // HTTP URL response 
     print(response.data)  // server data 
     print(response.result) // result of response serialization 

     //Optional binding to handle exceptions 
     self.newsData.removeAll() // clean the data source array 
     if let json = response.result.value as? [[String:String]] { 
      for news in json { 
       self.newsData.append(News(dictionary: news)) 
      } 
      self.tableView.reloadData() 
     } 
    } 
} 

И в следующем методе я отображения данных в ячейке

override func tableView(_ tableView: UITableView, cellForRowAt  indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 
    let news = newsData[indexPath.row] 
    cell.textLabel?.text = news.title 
    cell.detailTextLabel?.text = news.text 
    return cell 
} 
+1

Каково название вашего пользовательского класса? Вы должны использовать Cell как свою игрушку, и вы сможете делать то, что хотите! –

+1

Для примера у меня есть пользовательский класс ячейки таблицы представления Called NewsCell. Итак: cell = tableView.dequeueReusableCell (withIdentifier: "newsCell") как? NewsCell –

+0

Не могли бы вы предоставить дополнительную информацию? Должен ли я добавлять эти метки в свой собственный класс «newsCellTableViewCell»? –

ответ

0

Создайте подкласс от UITableViewCell F.E. NewsCell.

подключить розетки

@IBOutlet weak var headline: UILabel! 
@IBOutlet weak var excerpt: UILabel! 

к NewsCell. В функции override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

бросили в клетку, как это:

let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? NewsCell 

и установить свойства.

Убедитесь, что класс прототипа раскадровки задан как NewsCell.

Смежные вопросы