2010-02-14 2 views
1

Я последовал примеру из «Начало разработки iPhone 3», который помещает код для главного контроллера представления, панели вкладок, в метод делегата. Это правильное место, чтобы поместить это или должно быть в отдельный файл .h и .m? Все мои подзаголовки находятся в отдельных файлах, поэтому мне интересно, должен ли я иметь свой код контроллера панели вкладок в отдельном файле.Должен ли я помещать мой UITabBarController за пределы делегата приложения?

Кроме того, для подзапросов я вызываю 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]; 
} 

ответ

3

Является ли это правильное место, чтобы поместить это или она должна быть в отдельном .h и .m файл ? Должен ли я изменить делегат на тип UIViewController, чтобы я мог вызвать ViewDidLoad?

Нет, это ваша начальная точка загрузки, а не контроллер. Даже если вы измените свой тип, вид не будет вызван методом загрузки, делегат приложения не является контроллером представления. Здесь вы загружаете свой начальный контроллер представления. UITabbar (согласно doco) «Этот класс не предназначен для подкласса». см. here. (так что нет .h и .m-файла, из чего вы бы взяли?) вам не нужно подкласса, так как вы получите свой метод viewdidload для каждого из представлений, которые вы помещаете в панель вкладок.

+0

Спасибо Аран, документация ясна. Я должен был найти, что – conorgriffin

Смежные вопросы