web-dev-qa-db-ja.com

ストーリーボードでセルプロトタイプのコンセントを接続する

私はストーリーボードの初心者なので、いくつかの問題があります...

TableViewControllerを作成しましたが、Cell Prototypeをカスタマイズしたいと思います。セルプロトタイプに、UITableViewCell(AreaListCell)を継承する独自のクラスでカスタマイズしたいいくつかのラベルを追加しました。ストーリーボードで、セルプロトタイプの場合、カスタムクラスを「AreaListCell」で構成し、そのスタイルは「カスタム」です。

ストーリーボードで、セルプロトタイプを選択してからアシスタントを選択すると、アシスタントはUITableViewController(AreasTableViewController)を実装するクラスではなく、
私の「AreaListCell」クラス。

その結果、(セルプロトタイプのラベルからCtrl +ドラッグを使用して)AreasTableViewControllerクラスにアウトレットを作成できますが、AreaListCellクラスにはできません!セルプロトタイプをAreaListCellクラスに接続する方法はありますか?

ご協力いただきありがとうございます!

36
sebastien

更新:Xcode 4.6(おそらく以前)の時点で、コントロールドラッグでアウトレットを作成できるようになりました!-これは、インターフェイスセクションまたはクラス拡張で実行する必要があります(新しいセルのクラス拡張はデフォルトでは存在しませんサブクラス。これを指摘してくれたSteve Haleyに感謝します。

アシスタントエディターのコードブロックにドラッグしてアウトレットを自動的に接続して作成することはできませんが、これは貧弱ですが、アウトレットを手動で作成してから接続することはできます。

セルのサブクラスインターフェイスで:

@interface CustomCell : UITableViewCell

@property (nonatomic) IBOutlet UILabel* customLabel;

@end

実装で通常どおりに合成します。

ストーリーボードで、セルを選択して接続インスペクターに移動すると、新しいアウトレットが表示されます。そこからプロトタイプの関連要素にドラッグします。

enter image description here

これは、cell.customLabelメソッドでcellForRowAtIndexPath:としてアクセスできるようになりました。

128
jrturton

Ctrl + dragメソッドを使用して、カスタムプロトタイプセル内にあるビューを接続することはできません。代わりに、ビューのタグプロパティを使用し、セルを構築するときに、タグを使用してラベルを引き出します。

ここに:

//Let's assume you have 3 labels.  One for a name, One for a count, One for a detail
//In your storyboard give the name label tag=1, count tag=2, and detail tag=3


- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CustomTableViewCell *theCell = [tableView dequeueReusableCellWithIdentifier:@"Prototype Cell"];

    UILabel *nameLabel = (UILabel *)[theCell viewWithTag:1];
    UILabel *countLabel = (UILabel *)[theCell viewWithTag:2];
    UILabel *detailLabel = (UILabel *)[theCell viewWithTag:3];

    nameLabel.text = @"name";
    countLabel.text = @"count";
    detailLabel.text = @"details";

    return theCell;
}

また、カスタムセルコードでラベルをプロパティとして設定し、セルが初期化されたときにviewWithTag呼び出しを使用して、ストーリーボードで作成したラベルにラベルプロパティを割り当てます。

IBOutletを作成するためにカスタムセル内からCtrlキーを押しながらドラッグできないことに気付くまでに数日かかりました。

幸運を!

編集:カスタムセル内にラベルのIBOutletsを作成し、Ctrlキーを押しながらドラッグする方法ではなく、プログラムでリンクを作成できます。

編集2:私は完全に間違っていた、Ctrlキーを押しながらドラッグすることができます。この質問に対する2番目の回答を参照してください。難しいですが、非常にうまく機能します。

21
Justin Paulson

Swift

//画像がサーバーにある場合、これを使用しています。

// URLから画像を取得しています。

// Xcodeから画像を設定できます。

  1. 画像のURLは配列名=サムネイル、つまりself.thumbnail [indexPath.row]にあります
  2. uITableviewCellでセルにimageViewを配置します
  3. uIimageViewを選択して、ストーリーボードからタグを割り当てます。

    let pictureURL = URL(string: self.thumbnail[indexPath.row])!
    let pictureData = NSData(contentsOf: pictureURL as URL)
    let catPicture = UIImage(data: pictureData as! Data)
    var imageV = UIImageView()
    imageV = cell?.viewWithTag(1) as! UIImageView
    imageV.image = catPicture
    
0
Ameer Chand