1

私はOSX上のビューベースのNSTableViewsに頭を悩ませようとしています。

私の問題は、ロードされたビューセル(NSViewサブクラス)で、デリゲートに値を割り当てようとしたときにサブビューが初期化されないことです。

現時点では、正しいカウントと正しいビューが表示されていますが、サブビューにアクセスして適切な値を割り当てることができません。

私がこれまでにしたこと:

  • InterfaceBuilderのカスタムビューセルでxibを作成しました。
  • セルのカスタムクラスを作成し、IBに割り当てました。

これは正常に機能し、デバッガーでプロパティを確認できます。正しいクラスとプロパティは、正しいフィールドに接続されているIBOuletです。

私はへの呼び出しを見ることができます:

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row

私のNSViewControllerで:awakeFromNib私はします:

// Make my view controller the delegate
_applicationTableView.delegate = self;
// set the correct datasource
_applicationTableView.dataSource = [NWDataHolder sharedInstance];
// register the nib with the custom cell
[_applicationTableView registerNib:cellNib forIdentifier:@"ApplicationListViewCell"];

私の- (NSView *)tableView:viewForTableColumn:row:場合:

NWApplicationListViewCell *cell = [_applicationTableView makeViewWithIdentifier:@"ApplicationListViewCell" owner:self];

正しいクラスとセルが返され、プロパティにアクセスできます。問題は、サブビューが初期化されておらず、プロパティがnilであり、新しい値を設定できなかったことです。

Log(@"Application Name Label %@", cell.applicationNameLabel); => nil

サブビューが怠惰に初期化されるというヒントを見てきましたが、熱心に初期化する方法を見つけることができません。

私が間違っていることについて何か提案はありますか?

ありがとう、オリバー

4

1 に答える 1

1

問題を修正しました。しかし、なぜこれが実際に起こるのか理解できません。

IBのフィールドをファイル所有者に配線しましたが、ApplicationViewCellには配線しませんでした。プロパティを両方に配線した後、すべてが正常に機能します。

于 2013-02-11T12:33:50.583 に答える