7

Interface Builder で NSArrayController にバインドされた NSTableView のテーブル列があります。配列コントローラは にバインドさShared User Defaults ControllerれていContent Arrayます。Handles Content As Compound Value新しいオブジェクトの追加を機能させるには、選択する必要がありました。残念ながら、これによりadd:、配列にオブジェクトを渡すと、テーブル行の強調表示が無効になります。オブジェクトは追加されますが、テーブルの行は強調表示されず、行が編集できると思われる場所をダブルクリックする必要があります。

私の目標はadd:、アレイ コントローラーを使用してテーブル ビューに行を表示することです。次に、その行が自動的に強調表示され、ユーザーが編集できるようになります。

NSArrayController の属性:

ここに画像の説明を入力

NSArrayController のバインディング:

ここに画像の説明を入力

TableView 列のバインディング:

ここに画像の説明を入力

4

1 に答える 1

0

ここで見つけた回避策はうまくいきました。

NSArrayController をサブクラス化し、独自の add: メソッドを実装する必要があります

//
//  MyArrayController.h
//

#import <AppKit/AppKit.h>

@interface MyArrayController : NSArrayController

@end

//
//  MyArrayController.m
//

#import "MyArrayController.h"

@implementation MyArrayController


- (void)add:(id)sender {
    [super add:sender] ;

    [self performSelector:@selector(selectLastObject)
               withObject:nil
               afterDelay:0.0] ;
}

- (void)selectLastObject {
    if ([self selectsInsertedObjects]) {
        NSArray* arrangedObjects = [self arrangedObjects] ;
        NSInteger nObjects = [arrangedObjects count] ;
        if (nObjects > 0) {
            [self setSelectionIndex:nObjects-1] ;
        }
    }
}


@end
于 2013-02-24T04:38:45.017 に答える