2013-02-02 15 views
6

テキストを編集するためにセルビューをクリックできる簡単なNSTableView(テキストのみ)を作成しようとしています。すべてのチュートリアルおよび関連する質問は、これが自動動作であることを示唆していますが、私はそれを得ることはできません。クリックしてNSTableViewを編集できない

デリゲートとデータソースのリンクに問題はありません。私はプログラムですべてのセルに値を設定することができ、編集時に入力された新しいテキストをどうすればいいのか分かります。 ...テキストボックスを編集用に開くことができません。

(NSTable列がIBで編集可能としてマークされている)すべての手がかりを求めて

感謝。

+0

OK、ノーの答えが、誰もが/をクリックして、少なくともこれを可能_should_ことを確認できたのセルをダブルクリック編集用のテキストフィールドを開くNSTableView? Xcodeのインストールが壊れているかどうか疑問に思っています。私が見つけることができるすべてのチュートリアルでは、これはどのように作成するのか説明なしで通常の動作として取られます。ありがとう。 –

+1

これはデフォルトの動作ではなく、IBでグローバルに設定可能でもありません。データソース/デリゲートで編集できるように各セルを手動でコーディングする必要があります。 –

+0

私は同じ質問があります。あなたが公式の答えでもっと詳細を提供できるなら、それはすばらしいでしょう。 – Brett

答えて

6

tableView:viewForTableColumnデリゲートメソッドでは、各セルを編集可能にする必要がありました。

2週間後に問題なく動作するように見えますが、何とかして面倒な方法が必要であると私はまだ考えています。

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


    NSTableCellView *cellView; 
    if([tableColumn.identifier isEqualToString:@"word"]) 
    { 
     wordCellView = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self]; 
     cellView = wordCellView; 
     [cellView.textField setEditable:YES]; // Make Cell Editable! 
    } 
} 
+0

編集可能に設定することが私の鍵でした!ありがとう! – Brett

+2

最後に 'cellView'を返す必要がありますか? – Arc676

+0

素晴らしいアイデアだが、実際には必要ではない。 http://stackoverflow.com/a/28282459/341994を参照してください。 – matt

7

あなたはその後、「行動」と題し、ドロップダウンメニューまでスクロールし、「編集可能」を選択し、属性インスペクタを使用して、テキストフィールドのセルを選択することで、Interface Builderでこれを行うことができます。

これだけで、個々のセルをダブルクリックして編集可能なTextFieldにすることができます。 setObjectValue:forTableColumn:行:用

[参照のアップルドキュメント - (無効)にtableView :

あなたが効果を持たせる編集を行うには、あなたはまた、NSTableViewDelegate議定書からの次のメソッドを実装する必要がありますこの関数は通常NSTableViewオブジェクトのデリゲートとして設定したオブジェクトに実装する必要があります。

[あなたがそれらの見直しをしたい場合には代表者にアップルのドキュメントを参照してください](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html#//apple_ref/doc/uid/TP40002974-CH7-SW18

+0

あなたが提供したリンクはあなたの答えと一貫しているかもしれませんが、アップルのマニュアルではあなたの答えで指定したテクニックはセルベースのテーブルビューにしかないと言われています。さて、アップルはビューベースのテーブルビューを使用することをお勧めします。 - (void)tableView:setObjectValue:forTableColumn:row:代理メソッドを使用する代わりに、ターゲット/アクションを使用する値を設定することをお勧めします。誰かが私にどのようにtableViewの値を編集させ、それらの値をターゲット/アクションを使用して私のモデルに戻す方法を教えてもらえますか? – Kaydell

関連する問題