2015-10-07 14 views
5

私はちょうどプルガミング言語としてSwiftを使用し始めました。私はカスタムセルの問題に遭遇しました。Swiftカスタムセルラベルを使用して独自のセルを作成

私はカスタムセルを作成しようとすると、それから私がそれらを必要とするように(カスタムに設定されたスタイルで)設計しようとすると、すべてがうまく見えます。今では私が見つけたすべてのチュートリアルではスタイルオプション "基本的な"を使用しているので、データを割り当てる方法はわかりません。

私のコードを自分のコードに「コントロールして」ドラッグすると、データを正しく挿入するために「dateLabel」や「sourceLabel」などの特定の名前を付けます。今、私はあなたの誰かはできるかもわからない、と私は彼らに私のデータを割り当てることができるように私のカスタムメイドのラベルをリコールする方法については、働いていたすべての答えを見つけることができませんでした...

私はそれは、単純な問題だかなり確信しているが、私はこの^^

enter image description here

にすべてのリソースを見つけるcoudln'tうまくいけば、フォントが小さいために、私はちょうどあなたたちを望んでいないので、これで私を助けて私が得るエロスを見る。

それは、この男はそれをやっただけの方法を働いていただけだったので、私は、ガイドラインとして次のチュートリアルを使用:https://www.youtube.com/watch?v=0qE8olxB3Kk

私は、識別子をチェックし、彼が正しく設定されていると私は見つけることができません正しい名前で自分のラベルを正しく参照しなければならないことについては、オンラインのものはどれも。

任意の助けいただければ幸いです:)

+0

は設定&するあなたも、あなたが、あなたのラベルをフックUITableViewCell'、 'のカスタムサブクラスを作成する必要があり、「カスタム」のセルを使用するにはあなたのストーリーボードのセルプロトタイプのクラスです。表示されているエラーは、通常のUITableViewCell(作成中のものとそのメソッドから戻るもの)に、作成したカスタムラベルと一致するプロパティがないことを示しています。あなたがデキューする場所では、それはあなたのカスタムセルクラスだということを伝える必要があります。おそらく、カスタムセルのサブクラスに関するチュートリアルを探します。ところで、カスタムUICollectionViewセルの作成にも同じ基本概念とプロセスが適用されます。 – mc01

答えて

16

次の手順を試してください:

  1. UITableViewCellを拡張するカスタムテーブルビューのセルクラスを作成します。私の例では、カスタムテーブルビューのセルクラスはMyCustomTableViewCellと呼ばれています。

  2. ストーリーボードのセルを更新して、カスタムテーブルビューセルクラスを使用するようにします。 Identity Inspectorに移動し、クラスの値をカスタムテーブルビューセルクラスの名前に設定します。 Set Custom Cell Class in Identity Inspector

  3. ストーリーボードのセルを更新し、それを値をリユースアイデンティティを与えます。 Attributes Inspectorに移動し、識別子の値を設定します。たとえば、私は自分のセルに識別子値MyCustomCellを与えました。 Set the Reuse Identity of your Cell

  4. コントロール新しいカスタムテーブルビューセルクラス(すなわち、MyCustomTableViewCellクラス)にセルのラベルをドラッグします。


上記の手順を行っているたら、ときtableView:cellForRowAtIndexPath:方法でデキューあなたのセルのラベルにアクセスすることができます。ショー以下のコードスニペットとして、あなたはする必要があります:1)あなたは上記の手順で確立再利用識別子を使用してセルを取得し、2)カスタムテーブルビューセルクラスにキャスト。

たとえば、ここにあなたがMyCustomTableViewCellそれという名前を付けた場合、カスタムテーブルビューセルは次のようになります。これは、クラスを作成してコントロールがラベルをこのクラスにドラッグした後です。

class MyCustomTableViewCell: UITableViewCell {  
    @IBOutlet weak var categoryLabel: UILabel! 
    @IBOutlet weak var dateLabel: UILabel! 
    @IBOutlet weak var sourceLabel: UILabel! 
    @IBOutlet weak var titleLabel: UILabel! 
} 

あなたViewControllerは、次のようになります。

// NOTE: I subclassed UITableViewController since it provides the 
// delegate and data source protocols. Consider doing this. 
class ViewController: UITableViewController { 

    // You do NOT need your UILabels since they moved to your 
    // custom cell class. 

    // ... 
    // Omitting your other methods in this code snippet for brevity. 
    // ... 

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

     // Use your cell's reuse identifier and cast the result 
     // to your custom table cell class. 
     let article = tableView.dequeueReusableCellWithIdentifier("MyCustomCell", forIndexPath: indexPath) as! MyCustomTableViewCell 

     // You should have access to your labels; assign the values. 
     article.categoryLabel?.text = "something"    
     article.dateLabel?.text = "something"    
     article.sourceLabel?.text = "something"    
     article.titleLabel?.text = "something"    

     return article 
    } 
} 
+0

は我々だけで、デフォルトのUITableViewCellクラスを使用して、タグを使用したカスタムセルからラベルを取得、カスタムテーブルビューのセルクラスを作成いけないと仮定します!出来ますか ??致命的なエラーが発生しました:オプション値をアンラッピングしている間に予期せずnilが見つかりました。これを明確にしてください。 (注:*カスタムセルを作成して正常に動作しているので) –

+0

あなたが何を求めているのかよく分かりません。 'textLabel'、' detailTextLabel'と 'imageView':デフォルトの[' UITableViewCell'](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/)は、3つのフィールドがあります。デフォルトを使用する場合は、カスタムセルクラスを使用する必要はありません。 – whyceewhite

関連する問題