Xamarin.iOS - 单个 UITableView 中的多个 XIB
Posted
技术标签:
【中文标题】Xamarin.iOS - 单个 UITableView 中的多个 XIB【英文标题】:Xamarin.iOS - Multiple XIBs in a single UITableView 【发布时间】:2017-03-23 16:28:24 【问题描述】:我正在尝试根据模型中的变量将不同的笔尖加载到单个 UITableView 中。我似乎有一些看起来合乎逻辑且不会崩溃的东西,但是,只有 1 个 xib 正在加载和显示。
控制器方法:
private void populateTableData()
liveTipsTableView.RegisterNibForCellReuse(UINib.FromName("LiveTipCell_", null), "LiveTipCell_");
liveTipsTableView.RegisterNibForCellReuse(UINib.FromName("NewsCell_", null), "NewsCell_");
setListViewSource();
Refresh();
AddRefreshControl();
Add(liveTipsTableView);
liveTipsTableView.Add(RefreshControl);
表格源方法
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
var localTip = _tips[indexPath.Row];
if (localTip.NewsItem)
CellIdentifier = new NSString("NewsCell_");
NewsCell_ cell = new NewsCell_();
cell = tableView.DequeueReusableCell("NewsCell_") as NewsCell_;
var views = NSBundle.MainBundle.LoadNib("NewsCell_", cell, null);
cell = ObjCRuntime.Runtime.GetNSObject(views.ValueAt(0)) as NewsCell_;
cell.SelectionStyle = UITableViewCellSelectionStyle.None;
cell.BindDataToCell(localTip);
return cell;
else
CellIdentifier = new NSString("LiveTipCell_");
LiveTipCell_ cell = new LiveTipCell_();
cell = tableView.DequeueReusableCell("LiveTipCell_") as LiveTipCell_;
var views = NSBundle.MainBundle.LoadNib("LiveTipCell_", cell, null);
cell = ObjCRuntime.Runtime.GetNSObject(views.ValueAt(0)) as LiveTipCell_;
cell.SelectionStyle = UITableViewCellSelectionStyle.None;
cell.BindDataToCell(localTip);
return cell;
我有 2 个独立的 Xib 文件,它们有自己的类来填充视图。它们似乎都在调试时被使用,这只是表格视图仅显示其中一项的情况。
提前致谢,如果您需要更多信息以了解最新情况,请告诉我。
【问题讨论】:
【参考方案1】:这是在目标 C 中,但转换起来应该不会太难。
SO Post on a different question
【讨论】:
谢谢@Digitalsa1nt。我读过这个,但看不出这和我已经实现的有什么区别。我不是 ios 专家,所以不确定我在这里是否忽略了某些东西。 嗯,很有趣。确认您已为两个笔尖正确设置了“标识符”? 是的,两者似乎都正确命名,并且都有唯一的名称。这很奇怪,因为如果是这种情况,它通常会弹出构建错误,所以我不认为是这样。好像其中一个视图只是隐藏或不可见,即逐行调试表明每一行代码都运行正确,而不仅仅是剪切? 似乎它只保留一个对一个笔尖的引用。但这并没有多大意义。用一个笔尖然后另一个笔尖测试它可能是值得的,只是为了看看两者都被正确填充并且你没有遇到任何奇怪的问题。 所以我有 2 个非常相似的对象,但填充到 2 个单独的布局中。当我将两个对象加载到我的 tableview 中并尝试将它们加载到单独的 xib 中时,其中 1 个对象以正确的布局正确加载,而另一个则根本不出现。当我尝试将两者加载到相同的布局中时(因为对象足够相似,可以这样做),只出现 1 个 uitableviewcell ,但没有填充,并且所有视图都丢失了。非常奇怪的行为。以上是关于Xamarin.iOS - 单个 UITableView 中的多个 XIB的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin SQLite教程Xamarin.iOS项目添加引用
Xamarin.Form与Xamarin.Android或Xamarin.IOS的区别简述
Xamarin.forms(或)xamarin.ios/xamarin.android(或)本机
Xamarin.Forms 是 Xamarin.Android、Xamarin.IoS 和 Xamarin.Win 的简单总和吗?