MonoTouch:如何从 TabBarController 的多个视图中选择初始视图
Posted
技术标签:
【中文标题】MonoTouch:如何从 TabBarController 的多个视图中选择初始视图【英文标题】:MonoTouch: how to select initial view from TabBarController's multiple views 【发布时间】:2010-12-30 18:23:30 【问题描述】:我有 5 个 TabBar 视图...如何选择应用首次启动时出现的视图? (我使用应用程序启动时为空的数据进行了一些计算)。该应用程序甚至在它到达 FinishedLaunching 之前就崩溃了!它如何确定哪个视图将成为第一个视图?
之前的一个答案我得到了建议 tabBarController.SelectedIndex = 0; (我正在使用 MonoTouch) 但没有告诉我放在哪里。
【问题讨论】:
【参考方案1】:您应该在 UITabBarController 的 ViewDidLoad 中创建视图控制器,而不是在 ViewDidAppear 中。我使用下面的代码(第一部分在您的 AppDelegate 类中):
// WARNING: Do not make these variables local. MonoTouch will loose the reference to them!
private UIWindow _mainWindow;
private MainTabBarController _mainTabBarController;
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
_mainWindow = new UIWindow(UIScreen.MainScreen.Bounds);
_mainTabBarController = new MainTabBarController();
_mainWindow.AddSubview(_mainTabBarController.View);
_mainWindow.MakeKeyAndVisible ();
return true;
您的 MainTabBarController 类应如下所示:
public class MainTabBarController : UITabBarController
public override void ViewDidLoad ()
ViewControllers = new UIViewController[]
new ViewControllerTab1(),
new ViewControllerTab2(),
new ViewControllerTab3(),
new ViewControllerTab4(),
new ViewControllerTab5()
;
SelectedIndex = 2;
这将在启动时显示 Tab3(索引为 2)。
ViewControllerTab1 等是派生自例如的类。 UIViewController 或 UINavigationController 在自己的 ViewDidLoad() 中实现其用户界面
【讨论】:
小提示:你必须在这里调用base.ViewDidLoad,不是吗? 我认为您不必在这里调用 base.ViewDidLoad。 Apple 的 UIViewController 文档没有说明这是必需的。当需要时,Apple 会指定这一点(例如,对于 viewWillAppear:“如果您覆盖此方法,则必须在实现中的某个时刻调用 super”)。但是我刚开始 iPhone 编程,所以我绝对不是这方面的专家。【参考方案2】:var u = new UIViewController[]
tab1,
tab2,
tab3,
tab4,
tab5,
;
this.ViewControllers = u;
this.SelectedViewController = tab1;
我通常将 UITabBarController 子类化,并将上面的代码添加到我覆盖的 ViewDidAppear 方法中。
【讨论】:
谢谢凯文...我会试一试并回复你。我确实有一个问题:这段代码去哪里了?我是 MonoTouch 的新手,所以请多多包涵……如果遇到问题,我相信我会有更多问题。 忽略这个蹩脚的问题:它去哪儿了! 嗯……我用 IB 构建了这个……我猜 tab1、tab2 等是指在 TabBar 本身中显示的名称?它们是字符串,还是?你有工作代码的实际例子吗? 不,tab1-tab5 是 UIViewController,用于管理选项卡所代表的不同视图。结帐MonoTouch.info 并搜索 UITabViewController 以查看一些示例。以上是关于MonoTouch:如何从 TabBarController 的多个视图中选择初始视图的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MonoTouch 中注册 UIApplicationWillEnterForegroundNotification
如何使用 MonoTouch 在 iPhone 上播放视频?