我正在构建 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,则会应用相同的逻辑/问题。我很乐意用这两种语言中的任何一种来回答。
答案 0 :(得分:1)
您可以使用NSTableView获取NSTableView中任何NSView的列和行:
Private Sub UserForm_Initialize()
Dim i As Integer
Combobox1.List = Worksheets(3).Range("AM3:AM13").Value
For i = 0 To Combobox1.ListCount - 1
Combobox1.List(i) = Format(DateValue(Combobox1.List(i)), "dd mmm")
Next i
End Sub
Private Sub ComboBox1_Change()
'Nothing here
End Sub
Private Sub InsertButton_Click()
ActiveCell.Value = Combobox1.Value
End Sub