2014-02-12 20 views
3

我目前正在填充一個實現代碼如下所示:如何在Xamarin中的控制器中填充表格?

public class DataViewController : UIViewController 
{ 
    public override void ViewDidLoad() 
{ 
    base.ViewDidLoad(); 
     //... 
     this.DataTableView.Delegate = new DataTableViewSource(); 
    } 

    public class DataTableViewSource : UITableViewSource 
    { 
     //UITableSource methods 
    } 
} 

因爲這個我不得不把數據傳遞到DataViewTableSource莫名其妙的。這工作,但我更喜歡在UIViewController本身(包括單元格等)管理我的表數據。有點像Objective-C如何與UITableViewDataSource協議(接口)實現協同工作。

這在Xamarin中可能嗎?

回答

1

如果您使用Xamarin.iOS 7.0或更高版本並使您的視圖控制器實現IUITableViewDataSourceIUITableViewDelegate,則可能會出現這種情況。

例子:

public class DataViewController : UIViewController, IUITableViewDataSource, IUITableViewDelegate 
{ 
    public override void ViewDidLoad() 
    { 
     base.ViewDidLoad(); 
     //... 
     this.DataTableView.WeakDataSource = this; //Make sure to use WeakDataSource instead of DataSource 
    } 

    public override int RowsInSection (UITableView tableview, int section){ 

    } 

    public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath) 
    { 

    } 
} 

如果你想實現一個被標記爲在Objective-C Optional任何方法,你應該實施而又不override關鍵字,並與他們的Objective-C相當於給他們增加一個出口屬性。

像這樣:

[Export ("tableView:accessoryButtonTappedForRowWithIndexPath:")] 
public void AccessoryButtonTapped (UITableView tableView, NSIndexPath indexPath) 
{ 
} 

如果你有Xamarin工作室的最新版本/ Xamarin.iOS爲Visual Studio,智能感知應自動添加此出口屬性,並加入像這樣的方法時,刪除override關鍵字。

+0

此代碼無效。 – Anoop

+0

代碼的哪部分不起作用? –

相關問題