我知道有几个类似的问题已经问过,我经历了所有问题,但没有一个能解决我的问题。
我有一个简单的UIViewController
,其顶部包含UISearchBar
,UITableView
。这是基本代码:
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
searchBar.TextChanged += delegate {
tableView.DataSource = new CodeSearchTableViewDataSource(searchBar.Text);
tableView.ReloadData();
};
tableView.DataSource = new CodeSearchTableViewDataSource(searchBar.Text);
}
public class CodeSearchTableViewDataSource : UITableViewDataSource
{
static NSString CELL_ID = new NSString("MYID");
public List<CodeItem> CodesFound { get; set; }
public CodeSearchTableViewDataSource()
{
}
public CodeSearchTableViewDataSource(string searchText)
{
CodesFound = CodeSearch.Instance.Find(searchText);
}
public override int RowsInSection (UITableView tableView, int section)
{
return CodesFound.Count;
}
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
{
UITableViewCell cell = tableView.DequeueReusableCell(CELL_ID);
if (cell == null)
cell = new UITableViewCell(UITableViewCellStyle.Default, CELL_ID);
cell.TextLabel.Text = CodesFound[indexPath.Row].Id + " " + CodesFound[indexPath.Row].Desc;
return cell;
}
}
我没有自定义委托。我不明白的是,当第一次加载此视图时,该表将填充有效列表。但是,在搜索框中输入一个字符后,会向表格发送一个新列表,然后崩溃。
答案 0 :(得分:1)
从方法返回后,您在cell
中创建的GetCell
没有(托管)引用。因此,垃圾收集器(GC)可以随时收集它。
有关详细信息,请参阅我的answer(及其链接),了解有关以下问题:Monotouch - UITableview Cell null reference exception