有一点问题,这是细分:
我的AppDelegate使用了作为rootViewController的视图控制器。此视图控制器的目的是将几个其他视图控制器交换进出,称之为登录和主屏幕。为了简单起见,我删除了我将发布的代码中的任何交换代码,并且让rootViewController只显示它的第一个内容视图控制器,比如登录。
我遇到的问题是内容视图控制器似乎在rootViewController中被推下了一点点。我给rootViewController一个蓝色背景,内容视图控制器为橙色背景。这是我的代码:
AppDelegate.h
#import <UIKit/UIKit.h>
@class MainViewController;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) MainViewController *main;
@end
AppDelegate.m
#import "AppDelegate.h"
#import "MainViewController.h"
@implementation AppDelegate
@synthesize main;
- (void)dealloc
{
[_window release];
[main release];
[super dealloc];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
MainViewController *mainVC = [[MainViewController alloc] init];
self.main = mainVC;
self.window.rootViewController = self.main;
[self.window makeKeyAndVisible];
return YES;
}
MainViewController.h
#import <UIKit/UIKit.h>
@class ContentViewController;
@interface MainViewController : UIViewController
@property (nonatomic, retain) ContentViewController *content;
@end
MainViewController.m
#import "MainViewController.h"
#import "ContentViewController.h"
@implementation MainViewController
@synthesize content;
- (id)init
{
self = [super init];
if (self ) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor blueColor];
ContentViewController *viewController = [[ContentViewController alloc] init];
self.content = viewController;
[self.view insertSubview:self.content.view atIndex:0];
}
- (void)dealloc {
[content release];
[super dealloc];
}
@end
ContentViewController.h
#import <UIKit/UIKit.h>
@interface LoginVC : UIViewController
@end
ContentViewController.m
#import "ContentViewController.h"
@implementation ContentViewController
- (id)init
{
self = [super init];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor orangeColor];
}
- (void)dealloc {
[super dealloc];
}
@end
上面的代码给我一个状态栏,下面有一个蓝色条带(大约是状态栏的高度)(主视图控制器),然后橙色内容视图控制器占据屏幕的其余部分。出于某种原因,主视图控制器似乎正在推动内容视图控制器。
奇怪的是,如果我创建一个视图控制器并使用XIB绘制视图,它看起来很好,内容可以直接在主视图的顶部查看。
如果有人能对这个问题有所了解,我会非常感激。
干杯
答案 0 :(得分:2)
我想你不应该这样做
ContentViewController *viewController = [[ContentViewController alloc] init];
self.content = viewController;
[self.view insertSubview:self.content.view atIndex:0];
而是:
ContentViewController *viewController = [[ContentViewController alloc] init];
self.content = viewController;
[self presentViewController:self.content animated:YES completion:nil];