Ví dụ về bộ điều khiển chế độ xem vùng chứa [đã đóng]


94

Có ai có thể chỉ cho tôi bất kỳ ví dụ hay nào về việc tạo Bộ điều khiển Chế độ xem Tùy chỉnh làm Bộ điều khiển Chế độ xem Vùng chứa không? Tài liệu duy nhất tôi có thể tìm thấy là một vài đoạn văn trong Tham chiếu Lớp UIViewController . Tôi cảm thấy mình cần thêm một chút thông tin và việc triển khai ví dụ sẽ rất hay. Google đã không đưa ra bất kỳ điều gì.

Tôi đặc biệt quan tâm đến phương pháp:

transitionFromViewController:toViewController:duration:options:animations:completion:

Bạn có tìm thấy các nguồn khác cho điều này ngoài một siêu mã đã đề cập không?
John Estropia

1
Chưa. Tôi sẽ có một cuộc đào sau hôm nay nếu có thời gian. Có vẻ kỳ lạ là sẽ có quá ít thông tin về nó vì nó quan trọng và hữu ích như thế nào. Tôi tự hỏi nếu nó có lỗi và sẽ được ghi lại tốt hơn khi nó được cải thiện.
Undistraction

3
Điều này là cực kỳ khó hiểu đối với tôi. Ví dụ: dạng xem chỉ có thể có một bộ điều khiển được nhúng. Còn nếu bạn muốn chuyển bộ điều khiển trên chế độ xem vùng chứa đó thì sao?
user4951

@JanakNirmal Rất có nghĩa vụ.
Undistraction

i có thể ẩn chứa view
Maulik shah

Câu trả lời:


51

Điều tốt nhất tôi đã tìm thấy cho đến nay là Video phiên họp WWDC 2011 Phiên 102 - Triển khai UIViewController Containment .


1
Như trên. Đây không phải là ví dụ mã demo yêu thích của tôi, nhưng nó thực hiện đúng các vùng chứa VC cũng như quản lý bộ nhớ - điều thực sự quan trọng là bộ điều khiển chế độ xem con bạn được phát hành khi chúng không còn hiển thị nữa.
memmons

1
Thật không may, bản demo về cách sử dụng ContainerViewController đã không làm việc vì ông không có cài đặt email trên iPad của mình :-(
Ken M. Haggerty

Phiên đó có mẫu mã không?
user4951

bạn có mã mẫu bây giờ không, tôi cần nó vì tôi đã thử rất nhiều nhưng chưa có chất hòa tan.
iPhone có lập trình

37

2
+1 đề cập đến nơi lấy gói mã chết tiệt đó. Tôi đã xem qua nó.
user4951

6
+1 lần nữa, tại sao o tại sao Apple không thể đặt mã phiên WWDC trên các trang thành viên của họ?
axello

+1, Bạn có phiền chia sẻ, cách lấy đường dẫn mã nguồn này không?
Janak Nirmal

1
@JanakNirmal bạn đang gặp sự cố khi lấy mã nguồn nào? Để lấy mã WWDC, chỉ cần nhấp vào liên kết dmg và đăng nhập bằng id nhà phát triển apple của bạn.
JosephH

17
- (void)viewDidLoad{
    [super viewDidLoad];

    // I put self in a Navigation VC so we can use its right navigationbar 
    // item for triggering the transition
    self.navigationItem.rightBarButtonItem = 
     [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit 
                                                    target:self 
                                                    action:@selector(button:)] 
                                                                  autorelease];

    // create test1 and test2 instance (subclass UIViewController and 
    // also need to define their own nibs)
    vc1 = [[test1 alloc]initWithNibName:@"test1" bundle:nil];
    vc2 = [[test2 alloc]initWithNibName:@"test2" bundle:nil];

    //add to the container vc which is self    
    [self addChildViewController:vc1];
    [self addChildViewController:vc2];

    //the entry view (will be removed from it superview later by the api)
    [self.view addSubview:vc1.view];
}

IBAction này kích hoạt quá trình chuyển đổi giữa hai VC:

-(IBAction)button:(id)sender {
    [self transitionFromViewController:vc1 
                      toViewController:vc2 
                              duration:0.5    
                               options:UIViewAnimationOptionTransitionCurlDown 
                            animations:nil 
                            completion:nil];
}

1
Đây là một ví dụ tuyệt vời. Nhưng việc quản lý bộ nhớ trong trường hợp này có thể được cải thiện: stackoverflow.com/a/8453677/849616 để có giải pháp phù hợp hơn.
Vive

1
Không phải bạn sai. Nhưng [tự addChildViewController: vc1]; không có ý nghĩa. Vùng chứa VC có thể có nhiều Bộ điều khiển Chế độ xem Vùng chứa.
user4951

@Vive Tôi đã đạt được một điểm trong dự án của mình, nơi tôi quan tâm đến việc quản lý bộ nhớ. Bạn có thể cho tôi biết liên kết bạn đã đăng đặc biệt nào tốt hơn về mặt quản lý bộ nhớ không? Tôi rất mới và có một thời gian khó nhìn thấy những sự khác biệt
jacobronniegeorge


10

4
Trên thực tế, tôi đã tìm thấy điều đó, nhưng tiếc là nó được viết về Ios4, nhưng 5 đã có những thay đổi đáng kể. Apple hiện hỗ trợ rõ ràng việc tạo các Vùng chứa Bộ điều khiển Chế độ xem tùy chỉnh, mặc dù họ dường như không muốn giúp chúng tôi tìm ra cách sử dụng chúng. Xin cảm ơn.
Undistraction

Bạn có thể chỉ cho tôi nơi họ nói điều đó. Không nghi ngờ bạn, chỉ là tò mò, bởi vì tôi cũng đã phải vật lộn với điều đó.
Rui Peres

4
Đừng lo lắng. Tôi đã xem qua mã cho các lớp vùng chứa của anh ấy và không ai trong số chúng sử dụng bất kỳ phương thức nào sau đây: addChildViewController :, removeFromParentViewController, chuyển đổiFromViewController: toViewController: thời lượng: tùy chọn: hoạt hình: hoàn thành :, willMoveToParentViewController: và didMoveToParentViewController: Tất cả đều được đề cập trong bản cập nhật ios5 Tài liệu cho UIViewController.
Undistraction


3

Đây là hướng dẫn / ví dụ yêu thích của tôi (sẵn sàng cho iOS7) về chủ đề này (cả ba đều có mã nguồn có sẵn trên github):

Xem Vùng chứa Bộ điều khiển

Chuyển đổi bộ điều khiển chế độ xem vùng chứa tùy chỉnh

Chuyển đổi bộ điều khiển chế độ xem vùng chứa tùy chỉnh tương tác

Và sau đó, tất nhiên, Apple cung cấp một bài viết toàn bộ về chủ đề mà tôi thấy vô giá:

Tạo bộ điều khiển chế độ xem vùng chứa tùy chỉnh

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.