textLabel
は、テーブルセルスタイルが「基本」のようなデフォルトタイプのいずれかに設定されている場合にのみ有効なプロパティです。独自のラベルを作成するようなカスタムを行う場合は、セルタイプとして「カスタム」を指定する必要があります。
次に、あなたのUILabel
秒をレイアウトし、ちょうどあなたがInterface Builderで何か他のものの場合と同様に自動レイアウトの制約を使用することができます。
今、カスタムセルを使用しているので、ラベルにアクセスできるようにセルのサブクラスをUITableViewCell
に定義する必要があります。
は、単純にこのようなUITableViewCell
の新しいココアタッチサブクラスを作成します。
class MyCell: UITableViewCell {
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
}
これらのラベルのプロパティだけで、おそらくコントロール・ドラッグ我々のコードにInterface Builderでのラベルからによって作成されたIBOutletsしていることに注意してください他のUIコンセントと同じように
実際に、IBからこのクラスにドラッグできるようにするためには、IBのプロトタイプセルが実際にこのクラスであることを指定する必要があります。これを行うには、インスペクタでカスタムサブクラスを指定するだけです。
これは、セルのカスタムサブクラスではなく、テーブルビューであることに注意してください。
残っている唯一のことは、私たちのカスタムセルがIBに識別子を持っていることを確認することです。属性インスペクタの「スタイル」の直下のフィールドに、セルに「cellID」などの識別子を付けます。今
、のようなものにあなたのコードを変更し、コントローラからこれを参照する:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("cellID", forIndexPath: indexPath) as! MyCell
cell.label1.text = "Hello"
cell.label2.text = "World"
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
我々はUITableViewCell()
代わりdequeueReusableCellWithIdentifier
で細胞を作成すべきではないことに注意してください。これにより、テーブルビューで自動的にセルを効率的に再利用することができます。メソッドのパラメータに正しい識別子が指定されていれば、タイプがMyCell
であることが確かになるので、強制的にキャストすることができます。
ラベルを決して定義していないからです。それらをカスタムセルにプロパティとして追加し、代わりにそのカスタムセルをインスタンス化し、AutoLayoutまたはコードを使用してそれらを配置する必要があります。 – EmilioPelaez
@EmilioPelaezあなたの答えをありがとう。私は 'var label1:UILabel'の前に定義しましたが、 'cell.label1.text'のように使うことができないので使用できませんでした。 – user6283450
セル内のラベルをランダムに宣言することはできません。この[Youtube video](https://www.youtube.com/watch?v=adP2dG_C1XU)を見て、カスタムの「UITableViewCell」を作成してください。 – penatheboss