2015-03-18 66 views
1

我使用storyboard創建了一個View Controller,並在其上放置了一個UITableView。監聽View Controller中的UITableView事件

我的問題是,我無法弄清楚如何偵聽UITableView中的行選擇。

我知道它如何在UITableViewController中工作。您可以覆蓋RowSelected。但這是View Controller的一個表格。

我是Xamarin新手,這讓我瘋狂。我將不勝感激任何幫助。

回答

1

我更喜歡使用類似這樣的解決方案的內容:

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一個有待進一步提高抽象類,以便以後可以重用它 - 但這取決於你:)。

+0

我用我的代碼實現了你的代碼,你的答案看起來就是我正在尋找的東西。然而,我不清楚我應該把什麼放在GetCell和RowsInSection。我覺得沒有想到這一點很愚蠢,但你能告訴我我需要在那裏嗎? – CorporalCuddler 2015-03-20 19:53:25

+0

@CorporalCuddler你應該看看這個偉大的文章: http://developer.xamarin.com/guides/ios/user_interface/tables/part_2_-_populating_a_table_with_data/ – Roosevelt 2015-03-22 18:32:33

+0

羅斯福,你原來的代碼示例,加上你的鏈接到表教程,加上一些小調整解決了我的問題。謝謝!!! – CorporalCuddler 2015-03-23 12:31:58