gpt4 book ai didi

ios - Xamarin - UITableView 重新加载数组数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:26:14 27 4
gpt4 key购买 nike

我使用 TableSource 的新类在 Xamarin 上实现了 UITableView。我正在从 MainView 初始化 TableSource 并传递一个数组。然后我尝试从 MainView 更新该数组,但出现错误:

Object reference not sent to an instance

MainVC中的代码:

public override void ViewDidLoad()
{
base.ViewDidLoad();
// Perform any additional setup after loading the view, typically from a nib.
//Console.WriteLine("Event 1");
lVM = new ListViewModel();
lVM.dataUpdated += this.updateArray;
lVM.dataUpdatedNetwork += this.networkUpdatedSQL;

lVM.getInitialData(100);

tableSource = new ListTableSource(this);
tableV.Source = tableSource;

}

public void updateArray(object sender, EventArgs e) {

InvokeOnMainThread(delegate
{
//Console.WriteLine("Update array event on VC for SQL count for array " + lVM.ordersArray.Count);
tableSource.updateArray(lVM.ordersArray);
tableV.ReloadData();
});

}

TableSource中的代码:

public class ListTableSource : UITableViewSource
{
ListViewController listVCRef;
ArrayList tableItems;
string cellIdentifier = "TableCell";

public ListTableSource(ListViewController listVC)
{
tableItems = new ArrayList();
listVCRef = listVC;
}

public void updateArray(ArrayList items) {
tableItems = new ArrayList(items);
Console.WriteLine("Items " + tableItems.Count);
}
public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
{
new UIAlertView("Alert", "You touched: " + tableItems[indexPath.Row], null, "OK", null).Show();
tableView.DeselectRow(indexPath, true);
}

public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
UITableViewCell cell = tableView.DequeueReusableCell(cellIdentifier);

if (cell == null)
{
cell = new UITableViewCell(UITableViewCellStyle.Subtitle, cellIdentifier);
}

Order currentOrder = tableItems[indexPath.Row] as Order;

cell.TextLabel.Text = currentOrder.comment;
cell.DetailTextLabel.Text = currentOrder.orderDate.ToString();
return cell;

}

public override nint RowsInSection(UITableView tableview, nint section)
{
return tableItems.Count;
}

public override nfloat GetHeightForRow(UITableView tableView, NSIndexPath indexPath)
{
return 80;
}
}

我的方法错了吗?我应该如何更新 TableSource 中的数据。

最佳答案

我的感觉是 updateArraytableSource = new ListTableSource(this); 之前执行,因此 tableSource 为空。 lVM.getInitialData(100); 可能会触发 updateArray

关于ios - Xamarin - UITableView 重新加载数组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41223156/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com