gpt4 book ai didi

ios - 如何在 Xamarin 的 UITableViewSource 中使用单元格重用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:45 24 4
gpt4 key购买 nike

我有用于 UISearchDisplayControllerUITableViewSource 类。在我的主 TableView 中,我有一个工作正常的自定义单元格。现在我想将自定义单元格也用于搜索结果的表格 View 。但我只管理它以显示默认样式

public class SearchSource : UITableViewSource
{
static NSString cellIdentifier = new NSString("CustomCell");

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

if (cell == null)
cell = new UITableViewCell (UITableViewCellStyle.Default, cellIdentifier);

cell.TextLabel.Text = myList [indexPath.Row].Name;
return cell;
}

但这里我只有标准单元格,我想要我的自定义单元格。主 TableView 上的自定义单元格使用以下代码:

public partial class TestViewController : UITableViewController
{
static NSString cellIdentifier = new NSString("CustomCell");

public TestViewController (IntPtr handle) : base (handle)
{
TableView.RegisterClassForCellReuse (typeof(CustomCell), cellIdentifier);
}

public class TableSource : UITableViewSource {

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

这是 CustomCell 的构造函数:

public CustomCell(IntPtr 句柄):base(句柄)

这就是我创建 UISearchDisplayController 的方式:

// create search controller
searchBar = new UISearchBar (new RectangleF (0, 0, View.Frame.Width, 50)) {
Placeholder = "Enter a search query"
};
searchController = new UISearchDisplayController (searchBar, this);
searchController.Delegate = new SearchDelegate (tableItems);
searchController.SearchResultsSource = new SearchSource (searchController);
this.TableView.TableHeaderView = searchBar;

但我尝试的所有操作都会导致应用程序崩溃(没有引用、无法出队、...)或者构造函数不匹配。

如何将我的自定义单元格用于 UISearchDisplayController 生成的表格 View ?

最佳答案

自 iOS 6 以来切换到新的单元格重用模式我将我的 SearchSource 调整为

CustomPatientCell cell = (CustomCell)tableView.DequeueReusableCell (cellIdentifier);

然后我将以下内容添加到我的 TestViewController:

searchController.SearchResultsTableView.RegisterClassForCellReuse(typeof(CustomCell), cellIdentifier);

我只需将 GetHeightForRow 之类的方法添加到我的 SearchSource 中,就可以让它正常工作。

现在我有两个类似的 TableSourceSearchSource 实现 - 也许可以对两者进行总结?我从其他实现中看到,numberOfRowsInSection 等方法查询当前处于事件状态的 TableView 。我该如何总结呢?

关于ios - 如何在 Xamarin 的 UITableViewSource 中使用单元格重用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25306895/

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