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

从命令行自动执行 iOS monotouch GUI 测试

Monotouch、UIPopover 和获取事件

如何使用 MonoTouch 在 iPhone 上播放视频?

MonoTouch:从 ALAssetsLibrary.AssetForUrl 中获取图像

在 MonoTouch 应用程序中查看内存使用情况