web-dev-qa-db-ja.com

NSTableViewでカスタムセルを作成します

私のアプリでは、次のようなカスタムセルを作成しようとしています。

enter image description here

私はiOSでそれを行う方法を知っており、OS Xを使用してもまったく同じになるはずです。したがって、Interface Builderでテーブルビューを設計しましたが、カスタムセルを作成する方法を理解できます。必要なカスタムコンポーネント(2NSTextFieldと2NSImageView)をテーブルビューに設計した.xibに挿入しようとしました。次に、NSTableCellViewのサブクラスとしてクラス"CustomCell.m""CustomCell.h"を作成したので、コンポーネントをこれに接続しようとしました。クラスですが、追加できません...コンポーネントを「CustomCell」クラスに接続できないのはなぜですか?どうしましたか?これを行う方法を見つけるのを手伝ってもらえますか(おそらくチュートリアルも)?

これを行うには、iOS用のカスタムテーブルセルを作成する方法に従いました。

11
lucgian841
  1. Xibで、NSTableViewを追加し、属性インスペクターペインでcontentTypeがビューベースであることを確認します。
  2. [テーブル]列には、デフォルトでTableViewCellを含むTableCellviewが含まれています。 TableViewCellを削除します。
  3. 必要に応じて、NSTextFieldsとImageViewsをTableCellviewにドラッグします。デフォルトでは、NSTableCellviewは1つのImageviewと1つのTextfieldをサポートします。それぞれが2つ必要な場合は、NSTableCellviewを継承し、コンポーネントのIBOutletプロパティを作成して、IBのNSTableCellviewのクラスをわずかな継承テーブルセルビューに変更します。

    @interface InheritedTableCellview : NSTableCellView
    
    @property (assign) IBOutlet NSTextField *secondTextField;
    @property (assign) IBOutlet NSImageView *secondImageView;
    
    @end
    
    @implementation SRITableCellView
    
    @end
    
  4. TableCellviewの識別子に一意の文字列で名前を付けます。

  5. ImageviewおよびTextfieldアウトレットコンポーネントをTableCellviewに接続します。
  6. Tableviewデータソースを接続し、viewControllerに委任します。

ビューコントローラで、必要な行数を表示するために、以下のデータソースメソッドを実装します。

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
    return self.tableArray.count;
}

各行の画像とテキストを設定するデリゲートメソッドを実装し、

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
    InheritedTableCellview *cellView = [tableView makeViewWithIdentifier:@"MainCell" owner:self];
    cellView.backgroundStyle = NSBackgroundStyleDark;
    cellView.textField.stringValue = self.tableArray[row][@"textValue1"];
    cellView.imageView.image = [NSImage imageNamed:self.tableArray[row][@"image1"]];
    cellView.secondTextField.stringValue = self.tableArray[row][@"textValue2"];
    cellView.secondImageView.image = [NSImage imageNamed:self.tableArray[row][@"image2"]];

    return cellView;
}
36
Srinidhi

Xibで、接続するカスタムセルを選択し、右側のパネルの[ユーティリティ]領域にあるIDインスペクターに移動します( https://developer.Apple.com/library/ios/recipes/xcode_help- general/Chapters/AbouttheUtilityArea.html )。クラスをCustomCellタイプに変更します。その後、コンセントに接続できるはずです

1
A O

Appleは、Lionの時点でNSCellサブクラスの使用を推奨していません。 NSViewベースのNSTableViewを実行できるようになりました。これは、はるかに柔軟です。

私はdataSourceメソッドでNSViewsを作成することによってそれらを実行しましたが、 ここに ペン先でそれを実行することについてのまともな策略です。

Apple docs も参照してください。

1
Jef