2016-08-17 1 views
1

Вот файл, который я использую для контроллера табличного представления. Когда я запускаю проект, ячейка отображает текст, написанный в «именах», но не отображает его все.Как я могу отобразить весь текст в ячейке (Swift)?

Я хочу, чтобы он отображал весь текст в той же ячейке. То, что ячейка имеет размер в соответствии с тем, что написано в ней.

Как исправить это?

import Foundation 
import UIKit 

class FTBViewController: UITableViewController { 

var names = [String]() 
var identities = [String]() 

override func viewDidLoad() { 

    names = ["This is the text the cell is displaying but it won't show it all"] 
    identities = ["A"] 

    self.navigationItem.title = "Guía" 
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()] 



} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return names.count 

} 

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

    let cell = tableView.dequeueReusableCellWithIdentifier("FCell") 

    cell?.textLabel!.text = names[indexPath.row] 

    return cell! 

} 

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let vcName = identities[indexPath.row] 
    let viewController = storyboard?.instantiateViewControllerWithIdentifier(vcName) 
    self.navigationController?.pushViewController(viewController!, animated: true) 
} 
} 

ответ

4

добавить

cell?.textLabel!.numberOfLines = 0   
    cell?.textLabel!.lineBreakMode = .ByWordWrapping 
    cell?.textLabel!.font = UIFont.systemFontOfSize(14.0) // this is optional if you need use this 

Полный ответ

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

    let cell = tableView.dequeueReusableCellWithIdentifier("FCell") 
    cell?.textLabel!.numberOfLines = 0   
    cell?.textLabel!.lineBreakMode = .ByWordWrapping 
    cell?.textLabel!.font = UIFont.systemFontOfSize(14.0) 
    cell?.textLabel!.text = names[indexPath.row] 

    return cell! 

} 
+0

Также рассмотрите heightForRowAtIndexPath, если цель развертывания вашего приложения ниже 8.0 или если вы не используете автоматическую высоту для ячейки. Потому что вы можете столкнуться с той же проблемой, даже если приведенный выше код работает нормально. – Bharath

+0

@Bharath - почему, высота по умолчанию для таблицы составляет 43, она автоматически настраивается, иначе мы идем для вычисления высоты, если она авторезистирует, иначе используйте dimesnsion, если это автоопределение –

+0

Да, я просто напомнил в определенном случае, как если бы текст получил любая длина и цель развертывания ниже 8.0, когда автоматическое измерение не будет работать. В таком случае вам может потребоваться рассмотреть heightForRowAtIndexPath. – Bharath

2

Вы можете использовать следующий код в viewdidLoad:

tableView.estimatedRowHeight = 44.0 
    tableView.rowHeight = UITableViewAutomaticDimension 

Надеюсь, что это помогает ...