2016-06-15 5 views
0

私はテーブルビューセルの中にヘッダとボディーを持っています。私は体を包み込むようにしようとしていますが、私は問題があります。LineBreakModeをUITableViewCellで動作させるにはどうすればよいですか? iOS - Swift

これは私が私のビューコントローラに

@IBOutlet weak var tableView: UITableView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    tableView.delegate = self 
    tableView.dataSource = self 

} 

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

    if let cell = tableView.dequeueReusableCellWithIdentifier("mainCell") as? mainCell { 

     cell.mainHeader.text = (mainHeader[indexPath.row]) 
     cell.mainBody.text = (mainBody[indexPath.row]) 
     cell.mainBody.numberOfLines = 0 
     cell.mainBody.lineBreakMode = NSLineBreakMode.ByWordWrapping 


     return cell 

    } else { 

     return mainCell() 
    } 

}  

    func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return mainHeader.count 
} 


} 

を使用しているコードである私が検索しnumberOfLines = 0とlineBreakMode = NSLineBreakModeが働くだろうと思ったが、それは明らかではありません。

申し訳ありませんこれは単純な場合は、事前に感謝します。

@Daven

私はこれはおそらく助けにはなりませんが、私は、私はそれを持っているか、私がしなければ、私はそれが何であるかが不明だとは思わない知っています。また、私のVCであるすべてのものを元のコードを更新しましたが、VARSは

私はあなたが欲しい、あなたがテキストより長い1行であるとき、あなたのセルが展開したいと仮定すると、私のカスタムセル

import UIKit 

class mainCell: UITableViewCell { 

@IBOutlet weak var mainHeader: UILabel! 
@IBOutlet weak var mainBody: UILabel! 


override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 
} 

func configureCell (text:String) { 
    mainHeader.text = text 
    mainBody.text = text 

} 


} 
+0

あなたのデータソース/デリゲートをさらに投稿できますか?具体的には、あなたのheightForRowAtIndexPathメソッド、それは助けるかもしれません:) – Daven

+0

編集OP - それは助けがたくさんある場合は申し訳ありません – catsnotdrugs

+0

あなたはあなたの全体ViewControllerコードを投稿したと言った - あなたはheightForRowAtIndexPathメソッドがありますか?私は問題があると推測していますが、固定高さを返すので、セルが必要なときには展開されません。 – Daven

答えて

1

Toラベルの拡大に合わせてセルを拡張するには、いくつかのことをしたことを確認する必要があります。

tableView.estimatedRowHeight = 200.0; 
tableView.rowHeight = UITableViewAutomaticDimension 

またはこのメソッドを経由してのように、あなたのtableViewestimatedRowHeight値を設定します。

func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return 200.00 
} 

ます。また、この方法を使用するオプションを持っていますが、すべてのセルが起こっている場合、それは必要はありません高さが変化するように:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 

また、(これは私が:)使用したものである)this tutorialが参考に見つけることができます。あなたの自動レイアウト制約がどのように見えるかを示します。セルフサイジングセルの詳細については、hereを参照してください。

1

のためにこれを持っています

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 

func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return currentInfoSelectorOption.rowHeight + 100 
} 
を用いて推定行の高さを設定します。デリゲート関数を使用して、自動であるとセルの高さを設定します3210

次に、セル内でautolayoutを使用して高さを設定します。これを行うには、ラベルのセルの上下の距離制約を定数値として設定し、ラベルの行数を0に設定します。

関連する問題