我有一个iOS应用程序我正在使用Xamarin和MVVMCross,但我也使用第三方本机库,其中包含一些自己的视图(从.xib
加载具有库中实现的文件)。我需要做的是在这些原生视图上设置一些属性,并且我试图看看是否有这样做的方法并不涉及跳转到xcode并尝试重新编译整个事物(因为我现在无法做到这一点。
所以我的问题是,有没有办法拦截,应用程序范围内,所有加载视图的尝试,以便我可以检查视图,如果它是第三方库中的一个,设置它显示之前的一些属性?
MvvmCross的MvxTouchViewPresenter
有一个ChangePresentation
属性,但它似乎只适用于MvvmCross本身加载的MvxViewController
。
答案 0 :(得分:1)
您可以通过覆盖MvxTouchPresenter上的Show()
方法轻松拦截所有访问视图模型的尝试。例如:
public override void Show(MvxViewModelRequest request)
{
IMvxTouchView view = this.CreateViewControllerFor(request);
UIViewController viewController = (UIViewController) view;
this.Show(view);
}
然后,您可以使用类似Objective-C code in this post的内容检查UIView层次结构中的所有视图。您只需要遍历viewController属性中的所有UIViews并识别您的视图(可能通过使用respondsToSelector“闻它”;如果Xamarin不知道它,我无法弄清楚你如何使用isKindOfClass)。 / p>
我希望我理解你的问题。如果还有其他遗漏,请告诉我。