私はカスタムUITableViewセクションヘッダーとフッターが必要です。これについては、私はバインディングとロジックで動作するカスタムコントロールを作成したいと思います。そのためにMvvmCrossとXIBを使用したカスタムUITableViewHeaderFooterView?
私はXIBを作成し、次のようなバッキングクラスを追加しました:
public partial class HeaderFooterView : MvxTableViewHeaderFooterView
{
public static readonly NSString Key = new NSString("HeaderFooterView");
public static readonly UINib Nib = UINib.FromName("HeaderFooterView", NSBundle.MainBundle);
public HeaderFooterView(IntPtr handle) : base(handle)
{
}
public override void AwakeFromNib()
{
base.AwakeFromNib();
//var binding = this.CreateBindingSet<HeaderFooterView, TableViewSection>();
//binding.Apply();
}
}
MvxTableViewHeaderFooterView
はIMvxBindable
で株式UITableViewHeaderFooterView
を組み合わせ、実際にはかなり単純なクラスです。何もない。私はきちんとTableViewSourceコンストラクタ内に登録にもかかわらず、何らかの理由しかし
、:
tableView.RegisterNibForHeaderFooterViewReuse(HeaderFooterView.Nib, HeaderFooterView.Key);
そしてのみヘッダー自体を返すの適切な方法を実行します。
public override UIView GetViewForHeader(UITableView tableView, nint section)
{
return tableView.DequeueReusableHeaderFooterView(HeaderFooterView.Key);
}
アプリがで死にます次のエラー:
2017-07-12 16:56:40.517 MyAppiOS[3833:58706] *** Assertion failure in -[UITableView _dequeueReusableViewOfType:withIdentifier:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3600.7.47/UITableView.m:6696
2017-07-12 16:56:40.528 MyAppiOS[3833:58706] WARNING: GoogleAnalytics 3.17 void GAIUncaughtExceptionHandler(NSException *) (GAIUncaughtExceptionHandler.m:48): Uncaught exception: invalid nib registered for identifier (HeaderFooterView) - nib must contain exactly one top level object which must be a UITableViewHeaderFooterView instance
私のNIBには実際には1つのrooが含まれていますtオブジェクトであるHeaderFooterView
クラス(これはから順に派生したMvxTableViewHeaderFooterView
に由来します)に設定されているルートビュー自体です。それでもUITableViewHeaderFooterViewインスタンスはないと主張しています。
なぜそれが正常に動作していないのですか?
私はフッター/ヘッダーに対して推定された高さを割り当てなければならないと信じています。 – Digitalsa1nt
私の問題はレンダリングではなく、 'DequeueReusableHeaderFooterView'を呼び出そうとアプリがクラッシュすることです。 – fonix232