2010-03-21 34 views
6

đây là mã của tôi:presentModalViewController không làm việc

ViewController *vc = [[ViewController alloc] initWithNibName:@"TableView" bundle:nil]; 
[self.navigationController presentModalViewController:vc animated:YES]; 
//[self setView:[vc view]]; 

Nếu tôi gọi nó, không có gì xảy ra. Tuy nhiên, nếu tôi thay đổi thành:

ViewController *vc = [[ViewController alloc] initWithNibName:@"TableView" bundle:nil]; 
//[self.navigationController presentModalViewController:vc animated:YES]; 
[self setView:[vc view]]; 

Chế độ xem có vẻ tốt (không cần chuyển đổi). Tôi đang làm gì sai? Có điều gì đặc biệt mà bạn phải quan tâm khi khởi tạo bộ điều khiển xem không? Tôi cố gắng sao chép càng nhiều càng tốt từ các ví dụ của Apple, nhưng tôi không thể làm việc này ...

Cảm ơn mọi đầu vào!

- Ry

Trả lời

24

Bạn chỉ có thể trình bày quan điểm phương thức điều khiển từ bộ điều khiển đã được thể hiện trên màn hình (thường là thông qua một UINavigationController hoặc UITabBarController). Hãy thử tạo một UINavigationController, đẩy một viewController vào nó, và rồi trình bày bộ điều khiển phương thức của bạn. Có một dự án khởi đầu trong Xcode cho thấy cách tạo một luồng dựa trên UINavigationController nếu bạn không quen với nó.

Một điều khác cần lưu ý: nếu bạn chưa đẩy bộ điều khiển xem vào UINavigationController, thuộc tính .navigationController sẽ là 0 và thông báo sẽ không có hiệu lực.

+0

Meh. Không có cách nào dễ dàng hơn để làm điều này? Tôi không thực sự muốn tạo ra một UINavigationController chỉ để có thể trượt lên một cái nhìn ... Cảm ơn câu trả lời của bạn, mặc dù! – ryyst

+0

Bạn không phải tạo bộ điều hướng điều hướng để thực hiện việc này, nhưng bạn đang tham chiếu nó ở đây. Nếu chỉ có một bộ điều khiển xem, bạn chỉ có thể sử dụng CNTT để trình bày một bộ điều khiển xem phương thức (ví dụ, thoát khỏi ".navigationController" nếu ví dụ mã của bạn ở trên. Bạn sẽ phải thêm khung nhìn viewController của bạn vào cửa sổ chính của bạn để thực hiện điều này –

+4

+1 đã lưu cuộc sống của tôi ngay bây giờ ':)' –

1

Tôi gặp phải sự cố tương tự khi cố hiển thị chế độ xem phương thức trên một chế độ xem phương thức khác. Câu trả lời của Ben là đúng, và có thể được thực hiện như sau:

@interface FirstView: UIViewController { 

    UIViewController *firstView; 
} 

- (IBAction)showOptionsView:(id)sender; 

@end 

Trong lớp giao diện chính:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    firstView = [[UIViewController alloc]init]; 
    [firstView setView:self.view]; 
    [firstView setModalTransitionStyle:UIModalTransitionStyleCoverVertical]; 
} 

- (IBAction)showOptionsView:(id)sender { 
    OptionsView *optView = [[OptionsView alloc]initWithNibName:@"OptionsView" bundle:nil]; 

    if(firstView != nil) { 
     [firstView presentModalViewController:optView animated:YES]; 
     [optView release]; 
} 
Các vấn đề liên quan