2012-03-04 31 views
5

Tôi đang cố gắng thêm một bộ điều khiển xem vào lớp Appdelegate. Mã của tôi đi theo cách này ..Thêm một ViewController vào Appdelegate

[self.view addsubView:viewcontroller.view]; 

Nhưng tiếc là tôi không thể xem quan điểm điều khiển. Xin vui lòng đề nghị nếu tôi đang đi sai một nơi nào đó. Cảm ơn thời gian ur.

Phương pháp trong AppdidFinishLaunching là: -

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
    // Override point for customization after application launch. 
    self.window.backgroundColor = [UIColor whiteColor]; 
    // [self.window addSubview:videoController.view]; 
    self.window.rootViewController = videoController; 
    [self.window makeKeyAndVisible];  
    return YES; 
} 

và trong giao diện tải của ViewController tôi đã viết như

UIButton *playMovie = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
playMovie.frame = CGRectMake(70,30,100,50); 
[playMovie setTitle:@"Play Movie" forState:UIControlStateHighlighted]; 
[playMovie addTarget:self action:@selector(playMovie:) forControlEvents:UIControlEventTouchDown]; 
[self.view addSubview:playMovie]; 

Vấn đề ở đây là tôi không thể xem các nút và xem.Xin vui lòng trợ giúp.

Trả lời

9

Trong mọi trường hợp, bạn sẽ không bao giờ thêm chế độ xem của trình điều khiển chế độ xem theo cách thủ công vào giao diện như thế này. Các đại biểu ứng dụng không phải là, chính nó, một bộ điều khiển xem; vì vậy viewcontroller không phải là con của nó. Vì vậy, chế độ xem không phải của bạn để thêm. Sử dụng bộ điều khiển chế độ xem chính xác: bộ điều khiển chế độ xem là cửa sổ ứng dụng của bạn là rootViewController hoặc là một số bộ điều khiển của chế độ xem khác - và trong cả hai trường hợp, chế độ xem được đặt vào giao diện cho bạn một cách tự động.

Nếu chế độ xem này được xem là chế độ xem gốc của ứng dụng, hãy làm những gì các mẫu dự án Xcode 4.2 làm (ví dụ: Ứng dụng xem đơn): khởi tạo trình điều khiển chế độ xem và gán nó làm self.window.rootViewController. Nếu không, bạn không được sử dụng một bộ điều khiển xem để thêm nó như là một subview như bạn đang cố gắng làm; chỉ cần có được cái nhìn và thêm nó, mà không có bộ điều khiển xem xen kẽ.

Nó có thể giúp bạn đọc chương của tôi trên quan điểm điều khiển: http://www.apeth.com/iOSBook/ch19.html

+0

Mô tả cung cấp ở trên là rất hữu ích. Cảm ơn bạn về thông tin. Nhưng vẫn còn khi tôi cố gắng để gán các bộ điều khiển xem để cửa sổ vẫn còn tôi không thể xem các điều khiển xem. Hãy giúp tôi. Tôi đang chỉnh sửa câu hỏi bằng mã. Xin vui lòng cho tôi biết nếu tôi đang đi sai một nơi nào đó ... –

+0

Bạn đang nói 'self.window.rootViewController = videoController' nhưng tôi không thấy bạn gán' videoController' một giá trị; bạn chưa bao giờ khởi tạo trình điều khiển xem của mình. Vì vậy, tất cả mọi thứ là không. Bạn không có bộ điều khiển xem và không có chế độ xem, vì vậy bạn kết thúc với một cửa sổ màu trắng. – matt

+0

Ngoài ra 'loadView' của bạn được viết không chính xác. Đọc tài liệu (và chương tôi đã liên kết)! Trong 'loadView', bạn phải tạo khung nhìn và gán nó cho' self.view'. Địa điểm để thêm nội dung vào chế độ xem là trong 'viewDidLoad'. – matt

0

Hãy thử dưới nó làm việc cho tôi,

SFRmbrVC *viewController=[[SFRmbrVC alloc]initWithNibName:@"SFRmbrVC" bundle:nil]; 
[self.window.rootViewController addChildViewController:viewController]; 
viewController.parentController = self.window.rootViewController; 
viewController.view.frame = self.window.rootViewController.view.frame; 
[self.window.rootViewController.view addSubview:viewController.view]; 
viewController.view.alpha = 0; 
[viewController didMoveToParentViewController:self.window.rootViewController]; 

[UIView animateWithDuration:0.25 delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^ 
{ 
    viewController.view.alpha = 1; 
} 
       completion:nil]; 
Các vấn đề liên quan