我应该将我的UITabBarController放在App Delegate之外吗?

时间:2010-02-14 23:13:03

标签: iphone cocoa-touch delegates uitabbarcontroller

我按照“开始iPhone 3开发”中的一个示例,该示例将主视图控制器的代码(Tab Bar)放在委托方法中。这是放置它的正确位置还是应该放在单独的.h和.m文件中?我的所有子视图都在单独的文件中,所以我想知道我是否应该将我的标签栏视图控制器代码放在一个单独的文件中。

另外,对于子视图,我正常调用ViewDidLoad,但委托方法中没有ViewDidLoad,我想因为它是NSObject类型而不是UIViewController。我应该将委托更改为类型UIViewController,以便我可以调用ViewDidLoad吗?

谢谢,我现有应用的代码示例如下。

代表的头文件:

#import <UIKit/UIKit.h>

@interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {

    UIWindow *window;
    UITabBarController *rootController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *rootController;

@end

委托实施文件的开头

#import "MyAppDelegate.h"


@implementation MyAppDelegate

@synthesize window;
@synthesize rootController;    

- (void)applicationDidFinishLaunching:(UIApplication *)application {

    // Add the tab bar controller's current view as a subview of the window
    [window addSubview:rootController.view];
    [window makeKeyAndVisible];
}

1 个答案:

答案 0 :(得分:3)

这是放置它的正确位置还是应该放在单独的.h和.m文件中? 我应该将委托更改为类型UIViewController,以便我可以调用ViewDidLoad吗?

这不是你的初始加载点,不是视图控制器。即使你改变它的类型,视图也不会调用load方法,app delegate不是视图控制器。在这里你加载你的初始视图控制器。 UITabbar(根据doco)“这个类不用于子类化。”见here。 (所以没有.h和.m文件,你会从中得到什么?)你不需要子类化,因为你将为你放在标签栏中的每个视图获得viewdidload方法。