2011-02-09 5 views

答えて

2

からレコードを削除します削除機能は通常のNSTableViewではなくInterface Builderでサブクラスを使用します。

あなたはこのような例- (void)deleteItem方法で実装できます。この機能を実装するための正しい方法は、キーバインディングを使用している

- (void)deleteItem 
{ 
    if ([self numberOfSelectedRows] == 0) return; 

    NSUInteger index = [self selectedRow]; 

    [documentController deleteItemWithIndex:index]; 

} 
+0

複数のビューを同じdocumentControllerから個別に追跡する必要がある場合は、タグつまり、Interface Builderでビューのタグを入力し、 'keyDown:'メソッドでself.tag値の値をチェックします。 – Frost

+2

申し訳ありませんが、この回答には正しい印を付けるべきではありません。このソリューションは、ベストプラクティスではありません。 – Jacque

7

一つのアプローチ:

  1. はIBであなたのインターフェイスに+/-ボタンを追加し、削除してdeleteRecord IBAction
  2. に接続し( - )IB、ナビゲートして選択されたボタンプロジェクトをビルドすると属性インスペクタに>あなたのキー入力の記録を開始するボックスのボタン>キー相当
  3. クリックすると、そのヨーヨー与え、削除/ Backspaceキー

を打ちますその後

- (void)keyDown:(NSEvent *)theEvent 
{ 

    unichar key = [[theEvent charactersIgnoringModifiers] characterAtIndex:0]; 
    if(key == NSDeleteCharacter) 
    { 

     [self deleteItem]; 
     return; 
    } 

    [super keyDown:theEvent]; 

} 

したい任意のNSTableViewを持っていることを確認してください:uはdeleteRecordメソッドを実装し、バックスペースキーの押下はkeyDownそうのようにすると上書き、あなたはNSTableViewのサブクラスを作成することができ、あなたのテーブルビュー

+1

ええとこれを理解しましたが、1度に1つ以上のテーブルビューを表示すると問題が発生します:) –

6

を:

  1. IBで[削除]メニュー項目を選択し、たとえば、バックスペースキーと同等のキーを設定します。
  2. メニュー項目のアクションを、タスクを処理するために書き込んだメソッドに接続します。このメソッドは、最初のレスポンダを介してレスポンダチェーンを接続すると自動的にレスポンダチェーンの上に表示されます。
  3. 削除機能を実装します。

作成するアプリケーションの種類によって、検証デリゲートメソッドがあります。これにより、メニュー項目を有効にすることができます。ドキュメントベースのアプリケーションの場合、この検証は- (BOOL)validateUserInterfaceItem:(id)anItemによって行われます。

3

これは、NSViewControllerFirst Responderを使用した最新のソリューションです。

メニューEditDeleteメニュー項目は、First Responderのセレクタdelete:に接続されています。メニュー項目がDeleteでない場合は、作成し、First Responder(赤い立方体)のdelete:に接続します。

  • IBAction方法を実装するビューコントローラでDeleteメニュー項目(又は⌘⌫
  • 鍵同等の割り当て

    スウィフト:@IBAction func delete(_ sender: AnyObject)

    Objective- C:-(IBAction)delete:(id)sender

    を入力し、テーブルビューの行を削除するロジックを設定します。

サブクラスは必要ありません。

+0

削除アクションはどこから来ますか?私はIBのような多くのアクションをIBで見ることができますが、NSResponderはそれらのすべてを定義していません。 – KoCMoHaBTa

+0

@ IBActionまたは@ objcは同じ結果を返します。これが欠けていると、メニュー項目が削除されます – azimov