ボタンをクリックすると、ビューベースのテーブルのボタンの行を取得するにはどうすればよいですか?ボタンがクリックされたときに行は選択されていませんが、ボタンのアクションメソッドにsender.superview.superviewを記録すると、NSTableRowView:0x1001b3a90 - row:2が取得されることがわかりました。私はプログラムでそれをどうやって取得するのか分かりません。私はNSTableCellViewのサブクラスでボタンのアクションメソッドを持っています。ビューベースのテーブルのボタンの行を取得
答えて
-[NSTableView rowForView:]
は、そのドキュメントでこれを言う:
これは通常、アクションは上の実行されるべき行(および列)を見つけるためにNSButton(またはNSControl)のためのアクションメソッドで必要とされます。
ここでは簡単な例を示します。ここで私はコンテンツビューでUIButtonを追加しています。私はボタンをクリックしたとき、私はこれがある
-(void)goBuyTab:(UIButton *)sender{
NSLog(@"after click buy button function called goBuyTab");
NSLog(@"sender.tag in goBuyTab : %d",sender.tag);
int selectedRow=sender.tag;// This is row number
}
希望私は
//Adding a button
UIButton *btnBuyer=[UIButton buttonWithType:UIButtonTypeCustom];
btnBuyer.frame=CGRectMake(238, 10, 26, 32);
btnBuyer.tag=indexPath.row;
[btnBuyer setImage:[UIImage imageNamed:@"buyIcon.png"] forState:UIControlStateNormal];
[btnBuyer addTarget:self action:@selector(goBuyTab:)forControlEvents:UIControlEventTouchUpInside];
[cellNew.contentView addSubview:btnBuyer];
を必要とし、ユーザーがこれをクリックしたときに、私は次のメソッドからIDを持って、私は行番号を取得し、呼び出しがメソッドを呼び出すと、あなたが必要としたもの。
OSXであなたは、コントローラに、ボタン電池アクションメソッドでこれを使用することができます。
- (IBAction)yourMethod:(NSButtonCell *)sender {
NSInteger selected = [yourTableView selectedRow];
NSLog(@"sender sends :%ld", selected);
}
あなたはNSTableView
にコントローラからコンセントを設定する必要があります。
基本行を選択せずに行内のボタンをクリックすることは完全に可能であるため、これは必ずしも機能しません。 – Ely
(セルベースのテーブルビューで) 'sender'が' NSButtonCell'ではなく 'NSTableView'であるため、これも動作しません。 –
私はスウィフト4.ため
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
........
but.action = #selector(ViewController.buttonAction)
.........
}
@objc func buttonAction(but: NSButton){
let tablerow: NSTableRowView = but.superview?.superview as! NSTableRowView;
let index = table?.row(for: tablerow);
print("\(index));
}
- 1. NSArrayController、ビューベースのテーブル、NSPopUpButtonとバインディング
- 2. 非ビューベースのNSStatusItemの画面位置を取得する
- 3. 現在のテーブル行の値を取得
- 4. ビューベースのNSOutlineViewのファインダスタイルのフローティンググループ行
- 5. DB内の特定のテーブルのテーブルの行数を取得
- 6. テーブルの行数を取得するC#
- 7. "cascade-deleted"行のテーブル/プライマリキーを取得
- 8. テーブル内の行数を取得する
- 9. ボタンをクリックしてテーブル行の値を取得する方法Angularjs
- 10. テーブルからテーブルの行オブジェクトを取得する、またはその逆のテーブルを取得する
- 11. $この親兄弟テーブルのテーブル行を取得中!
- 12. ビューベースのNSTableViewフィルタリング+アニメーション
- 13. チェックボックスとビューベースのテーブルビュー
- 14. ビューベースのNSTableViewとNSCollectionView?
- 15. ビューベースのアプリケーションでxmlrpc
- 16. ASP GridViewボタンのクリックで行の値を取得
- 17. テーブルの最後の行を取得するためのSOQLクエリ
- 18. Azureテーブルの各パーティションの最初の行を取得する
- 19. MYSQL - 2つのテーブルからの行の数を取得する
- 20. HBaseシェルのテーブル内の行のカスタムカウントを取得する方法
- 21. は、テーブルのスキーマを取得
- 22. Androidテーブルのリストを取得
- 23. テーブル行をクリックしてすべてのセルの値を取得
- 24. MYSQLテーブルから選択、テーブルの最新の/最後の10行を取得
- 25. SQLite:テーブルから1つの行を取得+別の順序で行の残りを取得
- 26. ビューベースのアプリケーション内のUItableview
- 27. ビューベースのTableView(NSTableCellView)のハイパーリンク
- 28. JSoupでテーブル行を取得する
- 29. C++ \ SQL ODBC:テーブルから行を取得
- 30. SQLiteテーブルで行インデックスを取得する
おかげで、このコードを共有する、これは私が必要なものです。ボタンのアクションメソッドでテーブルビューを得ることができます。sender.superview.superview.superviewとsender.superviewのビュー – rdelmar
アクションはコントローラに送信され、そのコントローラはテーブルビューを知っている必要があります。それにはアウトレットが必要です。したがって、スーパービューチェーンに従う必要はありません。また、ビューを直接的または間接的に含む行を検索するので、 '-rowForView:'への引数として 'sender'を渡すことができます。 –
私はビューベースのテーブルでさまざまなUI要素をどのように操作できるかを確認するためにいくつかのテストを行っていましたので、最初は(単純化のために)アプリケーションデリゲートのアクションメソッドを呼び出しました。それから、カスタムテーブルのセルビューに配置します。なぜなら、どこかにあるべき場所を読んでいるからです。あなたのコメントで言ったように、実際にはコントローラーオブジェクト内にあるはずですが、動作させるにはどこに制限がありますか?なぜそれはアプリケーションデリゲートで動作しませんでしたか?ビューベースのテーブルでレスポンダチェーンがどのように見えるのか分かりません。 – rdelmar