38

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

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


ストーリーボードで、Cell Prototype を選択してからアシスタントを選択すると、「AreaListCell」クラスではなく、UITableViewController (AreasTableViewController) を実装するクラスがアシスタントに表示されます。

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

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

4

3 に答える 3

130

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

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

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

@interface CustomCell : UITableViewCell

@property (nonatomic) IBOutlet UILabel* customLabel;

@end

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

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

ここに画像の説明を入力してください

cell.customLabelこれで、メソッドと同じようにアクセスできますcellForRowAtIndexPath:

于 2012-04-16T18:57:49.527 に答える
21

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

ここ:

//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呼び出しを使用して、ストーリーボードに作成したラベルにラベルプロパティを割り当てることもできます。

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

幸運を!

編集:ctrl + dragメソッドを使用せずに、カスタムセル内にラベルのIBOutletsを作成し、プログラムでリンクを作成できます。

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

于 2012-04-16T15:06:41.947 に答える
0

スイフト3

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

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

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

  1. 画像の URL は配列名 = サムネイル、つまり self.thumbnail[indexPath.row] にあります。
  2. on 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
    
于 2017-03-27T11:51:27.290 に答える