如何使用 Xamarin.Mac 从 NSTableView 获取已编辑单元格的行和列?



我正在构建一个Xamarin.Mac应用程序,其中一个ViewControllers包含一个NSTableView。我已经成功地填充了表格视图,但我希望用户能够编辑一些单元格内容。

在功能上,我还能够使单元格可编辑。但是,我无法提取编辑单元格的行和列。这可能吗?

我有NSTableViewDelegate代码:

public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, nint row)
{
// Get the data
var Data = this._dataSource.DataRecords[(int)row];
NSTextField view = (NSTextField)tableView.MakeView(CellIdentifier, this);
if (view == null)
{
view = new NSTextField();
view.Identifier = CellIdentifier;
view.BackgroundColor = NSColor.Clear;
view.Bordered = false;
view.Selectable = true;
view.Editable = true;
view.EditingEnded += this.EditingEnded;
}
// Setup view based on the column selected
if(tableColumn.Title.Equals(string.Empty)) {
view.IntValue = Convert.ToInt16(row);
}
else {
view.StringValue = Data.Get(tableColumn.Title).ToString();
}
return view;
}
void EditingEnded(object sender, EventArgs e)
{
// I can get a reference to the correct, edited, NSTextField 
//   with the following line.
var textField = ((NSNotification)sender).Object as NSTextField;
// However, HERE, I would like to know what row and column was edited so 
//  that I can update my source data with the user-made change.
}

有谁知道如何使用此逻辑来获取编辑后的单元格在NSTableView中的位置?

我正在使用Xamarin.Mac,但我认为如果我在我的应用程序中使用Swift或Objective-C,同样的逻辑/问题将适用。我也很乐意用这两种语言中的任何一种来回答。

您可以使用 NSTableView 获取 NSTableView 中任何 NSView 的列和行:

  • 行视图
  • 列视图

例:

var textField = ((NSNotification)sender).Object as NSTextField;
var row = someTableView.RowForView(textField);
var column = someTableView.ColumnForView(textField);
  • https://developer.apple.com/documentation/appkit/nstableview/1526732-rowforview?language=objc
  • https://developer.apple.com/documentation/appkit/nstableview/1529415-columnforview?language=objc

最新更新