Xamarin 表视图崩溃
Posted
技术标签:
【中文标题】Xamarin 表视图崩溃【英文标题】:Xamarin Table View Crash 【发布时间】:2015-06-08 05:54:00 【问题描述】:我想在 XamarinApp 上使用 UITableView
。
我尝试了 UITableView 示例 Populating a Table with Data ,但它不起作用。
当我使用this.Add(table);
时导致崩溃。当我删除 this.Add(table)
时,它显示的是空表。
请帮帮我……
这是我的代码
using Foundation;
using System;
using System.CodeDom.Compiler;
using UIKit;
namespace KUkyuko
partial class MyTableViewSource : UITableView
public MyTableViewSource(IntPtr handle) : base (handle)
var table = this;
string[] tableItems = new string[] "Vegetables","Fruits","Flower Buds","Legumes","Bulbs","Tubers";
table.Source = new TableSource(tableItems);
this.Add(table); //this code cause crash
public class TableSource : UITableViewSource
string[] TableItems;
string CellIdentifier = "TableCell";
public TableSource (string[] items)
TableItems = items;
public override nint RowsInSection (UITableView tableview, nint section)
return TableItems.Length;
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
UITableViewCell cell = tableView.DequeueReusableCell (CellIdentifier);
string item = TableItems[indexPath.Row];
//---- if there are no cells to reuse, create a new one
if (cell == null)
cell = new UITableViewCell (UITableViewCellStyle.Default, CellIdentifier);
cell.TextLabel.Text = item;
return cell;
【问题讨论】:
【参考方案1】:我不太确定你想要达到什么目的,但是
我会像这样将 tableview 更改为 tableViewController::
partial class TableViewController : UITableViewController
public TableViewController (IntPtr handle) : base (handle)
// Register the TableView's data source
string[] tableItems = new string[] "Vegetables","Fruits","Flower Buds","Legumes","Bulbs","Tubers";
this.TableView.Source = new TableSource(tableItems);
public class TableSource : UITableViewSource
string[] TableItems;
string CellIdentifier = "TableCell";
public TableSource (string[] items)
TableItems = items;
public override nint RowsInSection (UITableView tableview, nint section)
return TableItems.Length;
public override nint NumberOfSections (UITableView tableView)
// TODO: return the actual number of sections
return 1;
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
UITableViewCell cell = tableView.DequeueReusableCell (CellIdentifier);
string item = TableItems[indexPath.Row];
//---- if there are no cells to reuse, create a new one
if (cell == null)
cell = new UITableViewCell (UITableViewCellStyle.Default, CellIdentifier);
cell.TextLabel.Text = item;
return cell;
如果您在 viewController 中使用表格,那么您需要在 viewController 中执行此部分并为表格设置插座。
当您将其添加到此代码时,此代码崩溃的原因:
var table = this;
string[] tableItems = new string[] "Vegetables","Fruits","Flower Buds","Legumes","Bulbs","Tubers";
table.Source = new TableSource(tableItems);
this.Add(table); //this code cause crash as it is the same as this.Add(this)
希望这会有所帮助!
【讨论】:
以上是关于Xamarin 表视图崩溃的主要内容,如果未能解决你的问题,请参考以下文章