私のアプリでは、次のようなカスタムセルを作成しようとしています。
私はiOSでそれを行う方法を知っており、OS Xを使用してもまったく同じになるはずです。したがって、Interface Builderでテーブルビューを設計しましたが、カスタムセルを作成する方法を理解できます。必要なカスタムコンポーネント(2NSTextField
と2NSImageView
)をテーブルビューに設計した.xibに挿入しようとしました。次に、NSTableCellView
のサブクラスとしてクラス"CustomCell.m"
と"CustomCell.h"
を作成したので、コンポーネントをこれに接続しようとしました。クラスですが、追加できません...コンポーネントを「CustomCell」クラスに接続できないのはなぜですか?どうしましたか?これを行う方法を見つけるのを手伝ってもらえますか(おそらくチュートリアルも)?
これを行うには、iOS用のカスタムテーブルセルを作成する方法に従いました。
必要に応じて、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
TableCellviewの識別子に一意の文字列で名前を付けます。
ビューコントローラで、必要な行数を表示するために、以下のデータソースメソッドを実装します。
- (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;
}
Xibで、接続するカスタムセルを選択し、右側のパネルの[ユーティリティ]領域にあるIDインスペクターに移動します( https://developer.Apple.com/library/ios/recipes/xcode_help- general/Chapters/AbouttheUtilityArea.html )。クラスをCustomCellタイプに変更します。その後、コンセントに接続できるはずです
Appleは、Lionの時点でNSCellサブクラスの使用を推奨していません。 NSViewベースのNSTableViewを実行できるようになりました。これは、はるかに柔軟です。
私はdataSourceメソッドでNSViewsを作成することによってそれらを実行しましたが、 ここに ペン先でそれを実行することについてのまともな策略です。
Apple docs も参照してください。