1

CustomClass : UICollectionViewCell からアウトレットにアクセスすると、アウトレットが初期化されていないように見え、適切な値を設定できません。

私が見たすべての例では、プレーン クラス (XIB なし) を使用して UI を設定しています。

[Register("CustomCommentCell")]
public partial class CustomCommentCell : UICollectionViewCell
{
    public static readonly NSString Identifier = new NSString("CustomCommentCell");

    public CustomCommentCell () : base()
    {
    }

    public CustomCommentCell (IntPtr handle) : base (handle)
    {
    }

    public void updateData()
    {
        this.lblComment.Text = "Test";
    }
}

一方、クラスを登録しました: this.tableComments.RegisterClassForCell (typeof(CustomCommentCell),commentCellId);

GetCell を適切に設定します。ただし、アウトレットを特定の値に設定しようとすると、null であることが示されます。(this.lblcomment = null) 初期化された UILabel である必要があります。

手がかりはありますか?

4

2 に答える 2

2

XIB を使用してカスタム CollectionViewCell を作成します。以下をせよ

1) UIcollectionViewCell を継承する C# クラスを作成する

[Register("MyCustomCell")]
public class MyCustomCell : UICollectionViewCell
{

    public static readonly NSString Key = new NSString ("MyCustomCell");

    [Export ("initWithFrame:")]
    public MyCustomCell(CoreGraphics.CGRect frame) : base (frame)
    {



    }

    public override UIView ContentView {
        get {
            var arr=    NSBundle.MainBundle.LoadNib ("MyCustomCell", this, null);
            UIView view =arr.GetItem<UIView> (0);
            view.Frame = base.ContentView.Frame;
            base.ContentView.AddSubview (view);
            return base.ContentView;
        }
    }

} 

2) 手順 1 で作成したクラスと同じ名前の IphoneView XIB ファイルを追加します。

3) XCODE で XIB を開き、次の変更を行います。

ここに画像の説明を入力

3.1) FileOwner を選択し、ステップ 1 と同じ名前のクラスを ここに画像の説明を入力 設定します 3.2) ビューを選択します クラス名 UIView を設定します

4) それに応じて XIB を設計する

于 2016-08-11T09:54:14.380 に答える
0

あなたが見ている問題を完全に理解することはできません。「カスタムXIBアウトレット」とは?この質問に「custom-controls」というタグが付けられているのはなぜですか? 問題を説明するのに役立つサンプルコードや写真はありますか?


UICollectionViewCell に使用するアプローチは、UITableViewCell に使用するアプローチと同じです - チュートリアルを参照してください - http://slodge.blogspot.co.uk/2013/01/uitableviewcell-using-xib-editor.html


更新:コメントとして投稿したコード (完全かどうかは不明) から、そのチュートリアルを実行すると役立つと思います。カスタム クラス名の登録や使用など、いくつかの手順を実行する必要がありRegisterNibForCellReuseます。そのうちの 1 つがおそらくこれを修正します。

于 2013-03-04T14:47:27.183 に答える