我更喜歡使用類似這樣的解決方案的內容:
public class TestTableViewSource : UITableViewSource
{
public delegate void RowSelectedEventHandler(NSIndexPath selectedIndexPath);
public event RowSelectedEventHandler RowSelectedEvent;
protected virtual void OnRowSelectedEvent(NSIndexPath selectedindexpath)
{
RowSelectedEventHandler handler = RowSelectedEvent;
if (handler != null) handler(selectedindexpath);
}
public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
{
OnRowSelectedEvent(indexPath);
tableView.DeselectRow(indexPath, true);
}
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
throw new NotImplementedException();
}
public override nint RowsInSection(UITableView tableview, nint section)
{
throw new NotImplementedException();
}
}
所以,你可以在UIViewController做到這一點:
TestTableViewSource source = new TestTableViewSource();
source.RowSelectedEvent += RowSelected;
YourTableView.Source = source;
private void RowSelected(NSIndexPath path)
{
// handle the selected row.
}
當然這種解決方案可以通過提取RowSelected一個有待進一步提高抽象類,以便以後可以重用它 - 但這取決於你:)。
我用我的代碼實現了你的代碼,你的答案看起來就是我正在尋找的東西。然而,我不清楚我應該把什麼放在GetCell和RowsInSection。我覺得沒有想到這一點很愚蠢,但你能告訴我我需要在那裏嗎? – CorporalCuddler 2015-03-20 19:53:25
@CorporalCuddler你應該看看這個偉大的文章: http://developer.xamarin.com/guides/ios/user_interface/tables/part_2_-_populating_a_table_with_data/ – Roosevelt 2015-03-22 18:32:33
羅斯福,你原來的代碼示例,加上你的鏈接到表教程,加上一些小調整解決了我的問題。謝謝!!! – CorporalCuddler 2015-03-23 12:31:58