Я создаю приложение 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 для своего приложения. Я бы с радостью принял ответ на любом из этих языков.