如何解决Xamarin.iOS,MVVMCross我可以从TabBarController的根ViewController访问NavigationItem吗?
我使用Xamarin.iOS和MVVMCross。我的应用程序的体系结构如下:
+-----------------------+
| Rootviewmodel |
| RootViewController |
| [MvxRootPresentation] |
| |
+--------+----+---------+
| |
+-----------+ +------------+
| |
+----------+----------+ +-----------+---------+
|Tab1viewmodel | |Tab2viewmodel |
|Tab1ViewController | |Tab2ViewController |
|[MvxTabPresentation] | |[MvxTabPresentation] |
| | | |
+---------------------+ +---------------------+
问题是,导航栏在选项卡ViewController中设置。我必须在NavigationItem.Title上显示一些信息,该信息存储在Rootviewmodel中。我可以拥有一个在RootViewController中初始化的通用导航栏吗? 或者如果无法实现,我可以从TabViewController访问Rootviewmodel吗?
解决方法
- 在
RootViewController
中,将修饰添加到类中。
[MvxRootPresentation(WrapInNavigationController = true)]
public partial class RootViewController : MvxTabBarViewController<RootViewModel>
- 在标签控制器中添加修饰符:
[MvxTabPresentation(WrapInNavigationController = false,TabName = "Tab1Title",TabIconName = "Tab1Icon")]
public partial class Tab1ViewController : ViewController<Tab1ViewModel>
- 在标签控制器中,还应在
ViewDidLoad
中添加它以隐藏单个导航栏:
public override void ViewDidLoad()
{
base.ViewDidLoad();
if (NavigationController != null && NavigationController.NavigationBar != null)
{
NavigationController.NavigationBar.Hidden = true;
}
}
奖金。您可以在RootViewController
protected override void SetTitleAndTabBarItem(UIViewController viewController,MvxTabPresentationAttribute attribute)
{
attribute.TabName = _yourLocalizationService.Translate(attribute.TabName);
base.SetTitleAndTabBarItem(viewController,attribute);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。