iPhone viewWillAppear không kích hoạt


116

Tôi đã đọc nhiều bài đăng về những người gặp vấn đề viewWillAppearkhi bạn không tạo hệ thống phân cấp chế độ xem của mình vừa phải. Vấn đề của tôi là tôi không thể hiểu điều đó có nghĩa là gì.

Nếu tôi tạo RootViewControllervà gọi addSubViewtrên bộ điều khiển đó, tôi sẽ mong đợi (các) chế độ xem được thêm vào sẽ được kết nối cho viewWillAppearcác sự kiện.

Có ai có ví dụ về hệ thống phân cấp chế độ xem có lập trình phức tạp nhận thành công viewWillAppearcác sự kiện ở mọi cấp không?

Trạng thái Tài liệu của Apple:

Cảnh báo: Nếu chế độ xem thuộc bộ điều khiển chế độ xem được thêm trực tiếp vào hệ thống phân cấp chế độ xem, bộ điều khiển chế độ xem sẽ không nhận được thông báo này. Nếu bạn chèn hoặc thêm một dạng xem vào hệ thống phân cấp dạng xem và nó có bộ điều khiển dạng xem, bạn nên gửi trực tiếp thông báo này cho bộ điều khiển dạng xem được liên kết. Không gửi được bộ điều khiển chế độ xem thông báo này sẽ ngăn không cho hiển thị bất kỳ hoạt ảnh liên quan nào.

Vấn đề là họ không mô tả cách thực hiện điều này. "Trực tiếp" nghĩa là gì? Làm thế nào để bạn "gián tiếp" thêm một lượt xem?

Tôi còn khá mới đối với Cocoa và iPhone nên sẽ rất tuyệt nếu có những ví dụ hữu ích từ Apple bên cạnh những điều cơ bản về Hello World.


Tôi đã gặp vấn đề này cho đến khi tôi nhận ra rằng tôi đã hiểu sai mục đích sử dụng của các lớp con UIViewController nói chung. Kiểm tra câu hỏi này. stackoverflow.com/questions/5691226/…
averydev

7
Xin hãy cẩn thận!!! Không còn đúng trên iOS 5 !!! Gọi viewWillAppear và viewDidAppear tự động
Vilém Kurz

Câu trả lời:


55

Nếu bạn sử dụng bộ điều khiển điều hướng và đặt đại biểu của nó, thì các phương thức xem {Will, Did} {Appear, Disappear} sẽ không được gọi.

Thay vào đó, bạn cần sử dụng các phương pháp ủy quyền của bộ điều khiển điều hướng:

navigationController:willShowViewController:animated:
navigationController:didShowViewController:animated:

2
Tôi đã không đặt đại biểu của bộ điều khiển điều hướng của mình và phương thức vẫn không được gọi. Dù sao, tôi đã thiết lập nó và sau đó tôi sử dụng các phương pháp bạn đề cập ở trên. Cảm ơn.
Dimitris

Tôi đang thấy điều tương tự như Dimitris
jkp

7
Tôi vừa thử nghiệm điều này trong iOS4 và iOS5: Điều này KHÔNG đúng: Đặt đại biểu của điều
hướngController

Swift 3: func navigationController (_ navigationController: UINavigationController, willShow viewController: UIViewController, hoạt hình: Bool) {} func navigationController (_ navigationController: UINavigationController, didShow viewController: UIViewController, hoạt hình: Bool) {}
Naloiko Eugene

28

Tôi đã gặp phải vấn đề tương tự. Chỉ cần gửi viewWillAppeartin nhắn đến bộ điều khiển chế độ xem của bạn trước khi bạn thêm nó làm chế độ xem phụ. (Có một tham số BOOL thông báo cho bộ điều khiển chế độ xem nếu nó đang được hoạt ảnh để xuất hiện hay không.)

[myViewController viewWillAppear:NO];

Nhìn vào RootViewController.m trong ví dụ Metronome.

(Tôi thực sự thấy các dự án ví dụ của Apple rất tuyệt vời. Còn RẤT NHIỀU hơn HelloWorld;)


3
Trên thực tế, bạn nên gọi viewWillAppear sau khi bạn thêm nó vào chế độ xem phụ. Nếu không, IBOutlets / IBActions sẽ không được kết nối.
Không gian thứ

2
Vâng, sau đó. Đã tạo chế độ xem phụ từ XIB, viewWillAppear không được gọi. Tự tôi gọi nó và mọi thứ hoạt động tốt.
JOM

Cảm ơn bạn! Đây chính xác là nó đối với tôi. Tôi đã thêm một lượt xem phụ theo cách thủ công qua [scrollView addSubview:controller.view];. Tôi đã thêm dòng [controller viewWillAppear:NO];sau đó và thì đấy! Làm việc như người ở.
Rob S.

Trong tất cả khả năng, điều này là do UIViewController của bạn đang kiểm soát một chế độ xem là một chế độ xem con của một chế độ xem được điều khiển bởi một UIViewController khác. Đây không phải là mẫu thiết kế dự kiến. Để biết thêm giải thích, hãy xem bài đăng này. stackoverflow.com/questions/5691226/...
averydev

6
Xin hãy cẩn thận!!! Không còn đúng trên iOS 5 !!! Cuộc gọi viewWillAppear và viewDidAppear tự động. Nếu bạn gọi nó theo cách thủ công, nó sẽ được gọi hai lần.
Vilém Kurz

18

Cuối cùng tôi đã tìm ra giải pháp cho CÔNG VIỆC ĐÓ!

UINavigationControllerDelegate

Tôi nghĩ rằng ý chính của nó là đặt đại biểu của điều khiển điều khiển của bạn cho bộ điều khiển chế độ xem nó có trong đó và thực hiện UINavigationControllerDelegatevà đó là hai phương pháp. Xuất sắc! Tôi rất vui mừng vì cuối cùng tôi đã tìm ra giải pháp!


làm thế nào để gán một rootviewcontroller làm đại biểu cho điều hướng?
Gargo

1
Nó KHÔNG HOẠT ĐỘNG! thử thu nhỏ ứng dụng và tối đa hóa nó
Vyachaslav Gerchicov

8

Tôi chỉ có cùng một vấn đề. Trong ứng dụng của tôi, tôi có 2 bộ điều khiển điều hướng và việc đẩy cùng một bộ điều khiển chế độ xem trong mỗi bộ điều khiển trong số chúng hoạt động trong một trường hợp và không hoạt động trong trường hợp kia. Ý tôi là khi đẩy bộ điều khiển chế độ xem chính xác trong lần đầu tiên UINavigationController, viewWillAppearđược gọi nhưng không được gọi khi được đẩy trong bộ điều khiển điều hướng thứ hai.

Sau đó, tôi xem qua bài đăng này UINavigationController nên gọi các phương thức viewWillAppear / viewWillDisappear

Và nhận ra rằng bộ điều khiển điều hướng thứ hai của tôi đã xác định lại viewWillAppear. Kiểm tra mã cho thấy rằng tôi không gọi

[super viewWillAppear:animated];

Tôi đã thêm nó và nó hoạt động!

Tài liệu cho biết:

Nếu bạn ghi đè phương thức này, bạn phải gọi super tại một số thời điểm trong quá trình triển khai của mình.


Điều tương tự ở đây. Rối rắm vì không gọi được siêu.
olivaresF

5

Tôi đang sử dụng bộ điều khiển điều hướng. Khi tôi muốn giảm xuống cấp dữ liệu khác hoặc hiển thị chế độ xem tùy chỉnh của mình, tôi sử dụng như sau:

[self.navigationController pushViewController:<view> animated:<BOOL>];

Khi tôi làm điều này, tôi nhận được viewWillAppearchức năng để kích hoạt. Tôi cho rằng điều này đủ điều kiện là "gián tiếp" vì tôi không tự gọi addSubViewphương thức thực tế . Tôi không biết liệu điều này có áp dụng được 100% cho ứng dụng của bạn hay không vì tôi không thể biết liệu bạn có đang sử dụng bộ điều khiển điều hướng hay không, nhưng có thể nó sẽ cung cấp manh mối.


5

Cảm ơn iOS 13.

ViewWillDisappear, ViewDidDisappear, ViewWillAppearViewDidAppearsẽ không được gọi vào một bộ điều khiển xem giới thiệu trên iOS 13 trong đó sử dụng một trình bày phương thức mới mà không bao gồm toàn bộ màn hình.

Tín dụng sẽ được chuyển cho Arek Holko . Anh ấy thực sự đã cứu ngày của tôi.

nhập mô tả hình ảnh ở đây


4

Đầu tiên, thanh tab phải ở cấp cơ sở, tức là được thêm vào cửa sổ, như đã nêu trong tài liệu của Apple. Đây là chìa khóa cho hành vi đúng.

Thứ hai, bạn có thể sử dụng UITabBarDelegate/ UINavigationBarDelegateđể chuyển tiếp các thông báo theo cách thủ công, nhưng tôi thấy rằng để toàn bộ hệ thống phân cấp các cuộc gọi xem hoạt động chính xác, tất cả những gì tôi phải làm là gọi theo cách thủ công

[tabBarController viewWillAppear:NO];
[tabBarController viewDidAppear:NO];

[navBarController viewWillAppear:NO];
[navBarController viewDidAppear:NO];

.. chỉ MỘT LẦN trước khi thiết lập bộ điều khiển chế độ xem trên bộ điều khiển tương ứng (ngay sau khi cấp phát). Từ đó trở đi, nó đã gọi chính xác các phương thức này trên các bộ điều khiển chế độ xem con của nó.

Hệ thống phân cấp của tôi như thế này:

window
    UITabBarController (subclass of)
        UIViewController (subclass of) // <-- manually calls [navController viewWill/DidAppear
            UINavigationController (subclass of)
                UIViewController (subclass of) // <-- still receives viewWill/Did..etc all the way down from a tab switch at the top of the chain without needing to use ANY delegate methods

Chỉ cần gọi các phương thức được đề cập trên bộ điều khiển tab / nav lần đầu tiên đảm bảo rằng TẤT CẢ các sự kiện đều được chuyển tiếp chính xác. Tôi không cần gọi chúng theo cách thủ công từ UINavigationBarDelegate/ UITabBarControllerDelegatemethod.

Chú thích bên lề: Thật kỳ lạ, khi nó không hoạt động, phương pháp riêng tư

- (void)transitionFromViewController:(UIViewController*)aFromViewController toViewController:(UIViewController*)aToViewController 

.. mà bạn có thể thấy từ callstack trên một triển khai đang hoạt động, thường gọi các viewWill/Did..phương thức nhưng đã không thực hiện cho đến khi tôi thực hiện ở trên (mặc dù nó đã được gọi).

Tôi nghĩ rằng điều RẤT quan trọng UITabBarControllerlà mặc dù ở mức cửa sổ và các tài liệu dường như sao lưu điều này.

Hy vọng điều đó đã rõ ràng (ish), vui lòng trả lời các câu hỏi khác.


3

Vì không có câu trả lời nào được chấp nhận và mọi người (như tôi đã) đến đây, tôi đưa ra biến thể của mình. Mặc dù tôi không chắc đó là vấn đề ban đầu. Khi bộ điều khiển điều hướng được thêm dưới dạng một chế độ xem phụ vào một chế độ xem khác, bạn phải tự gọi các phương thức viewWillAppear / Dissappear, v.v. như sau:

- (void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [subNavCntlr viewWillAppear:animated];
}

- (void) viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    [subNavCntlr viewWillDisappear:animated];
}

Chỉ để làm cho ví dụ hoàn chỉnh. Mã này xuất hiện trong ViewController của tôi nơi tôi đã tạo và thêm bộ điều khiển điều hướng vào một dạng xem mà tôi đã đặt trên dạng xem.

- (void)viewDidLoad {

    // This is the root View Controller
    rootTable *rootTableController = [[rootTable alloc]
                 initWithStyle:UITableViewStyleGrouped];

    subNavCntlr = [[UINavigationController alloc]   
                  initWithRootViewController:rootTableController];

    [rootTableController release];

    subNavCntlr.view.frame = subNavContainer.bounds;

    [subNavContainer addSubview:subNavCntlr.view];

    [super viewDidLoad];
}

.h trông như thế này

@interface navTestViewController : UIViewController <UINavigationControllerDelegate> {
    IBOutlet UIView *subNavContainer;
    UINavigationController *subNavCntlr;
}

@end

Trong tệp nib, tôi có chế độ xem và bên dưới chế độ xem này, tôi có nhãn là hình ảnh và vùng chứa (chế độ xem khác) nơi tôi đặt bộ điều khiển vào. Đây là cách nó trông. Tôi đã phải xáo trộn một số thứ vì đây là công việc cho một khách hàng.

văn bản thay thế


3

Lượt xem được thêm "trực tiếp" bằng cách gọi điện [view addSubview:subview]. Lượt xem được thêm "gián tiếp" bằng các phương pháp như thanh tab hoặc thanh điều hướng hoán đổi lượt xem phụ.

Bất kỳ lúc nào bạn gọi [view addSubview:subviewController.view], bạn nên gọi [subviewController viewWillAppear:NO](hoặc CÓ tùy trường hợp của bạn).

Tôi gặp sự cố này khi triển khai hệ thống quản lý chế độ xem gốc tùy chỉnh của riêng mình cho màn hình con trong trò chơi. Thêm lệnh gọi vào viewWillAppear theo cách thủ công đã khắc phục được sự cố của tôi.


3

Cách chính xác để làm điều này là sử dụng api chứa UIViewController.

- (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view.
     UIViewController *viewController = ...;
     [self addChildViewController:viewController];
     [self.view addSubview:viewController.view];
     [viewController didMoveToParentViewController:self];
}

Đây hoàn toàn là giải pháp hiện đại chính xác (iOS 9,8,7). Ngoài ra, nếu bạn đang thay đổi bộ điều khiển chế độ xem được nhúng ngay lập tức, bạn sẽ cần gọi [viewController willMoveToParentViewController: nil]; [viewController.view removeFromSuperview]; [viewController removeFromParentViewController];
Eli Burke

1
Trong trường hợp viewWillAppear:này vẫn có thể không được gọi
Vyachaslav Gerchicov

2

Tôi sử dụng mã này cho bộ điều khiển chế độ xem đẩy và cửa sổ bật lên:

đẩy:

[self.navigationController pushViewController:detaiViewController animated:YES];
[detailNewsViewController viewWillAppear:YES];

bật:

[[self.navigationController popViewControllerAnimated:YES] viewWillAppear:YES];

.. và nó hoạt động tốt cho tôi.


2

Một sai lầm rất phổ biến là như sau. Bạn có một lượt xem UIView* a, và một lượt xem khác UIView* b,. Bạn thêm b vào a làm lượt xem phụ. Nếu bạn cố gắng gọi viewWillAppear trong b, nó sẽ không bao giờ được kích hoạt, vì nó là một chế độ xem phụ của một


2

iOS 13 đã cắn vào mông ứng dụng của tôi ở đây. Nếu bạn nhận thấy hành vi thay đổi kể từ iOS 13, chỉ cần thiết lập những điều sau trước khi bạn đẩy nó:

yourVC.modalPresentationStyle = UIModalPresentationFullScreen;

Bạn cũng có thể cần đặt nó trong .storyboard của bạn trong trình kiểm tra Thuộc tính (đặt Bản trình bày thành Toàn màn hình).

Điều này sẽ làm cho ứng dụng của bạn hoạt động như trong các phiên bản iOS trước.


1

Tôi không chắc chắn 100% về điều này, nhưng tôi nghĩ rằng việc thêm chế độ xem trực tiếp vào hệ thống phân cấp chế độ xem có nghĩa là gọi -addSubview:chế độ xem của bộ điều khiển chế độ xem (ví dụ [viewController.view addSubview:anotherViewController.view]:) thay vì đẩy bộ điều khiển chế độ xem mới vào ngăn xếp của bộ điều khiển điều hướng.


1

Tôi nghĩ rằng việc thêm một chế độ xem phụ không nhất thiết có nghĩa là chế độ xem sẽ xuất hiện, vì vậy không có lệnh gọi tự động đến phương thức của lớp mà nó sẽ


1

Tôi nghĩ ý của chúng là "trực tiếp" là kết nối mọi thứ giống như cách mà mẫu xcode "Ứng dụng điều hướng" làm, đặt UINavigationController làm chế độ xem phụ duy nhất của UIWindow của ứng dụng.

Sử dụng mẫu đó là cách duy nhất tôi có thể nhận các phương thức Will / Did / Appear / Disappear được gọi trên đối tượng ViewControllers khi push / pops của các bộ điều khiển đó trong UINavigationController. Không có giải pháp nào khác trong các câu trả lời ở đây phù hợp với tôi, bao gồm cả việc triển khai chúng trong RootController và chuyển chúng đến NavigationController (con). Các hàm đó (will / did / xuất hiện / biến mất) chỉ được gọi trong RootController của tôi khi hiển thị / ẩn các VC cấp cao nhất, "đăng nhập" và điều hướng của tôi, không phải VC phụ trong bộ điều khiển điều hướng, vì vậy tôi không có cơ hội "chuyển chúng qua" cho Hải quân VC.

Tôi đã kết thúc bằng cách sử dụng chức năng ủy quyền của UINavigationController để tìm kiếm các chuyển đổi cụ thể yêu cầu chức năng tiếp theo trong ứng dụng của tôi và điều đó hoạt động, nhưng nó đòi hỏi phải làm việc nhiều hơn một chút để làm cho cả chức năng biến mất và xuất hiện được "mô phỏng".

Ngoài ra, đó là một vấn đề nguyên tắc để làm cho nó hoạt động sau khi đập đầu vào vấn đề này trong nhiều giờ hôm nay. Bất kỳ đoạn mã nào đang hoạt động sử dụng RootController tùy chỉnh và VC điều hướng con sẽ được đánh giá cao.


1

Trong trường hợp này giúp bất cứ ai. Tôi đã gặp sự cố tương tự trong đó của tôi ViewWillAppearkhông kích hoạt trên a UITableViewController. Sau nhiều lần thử nghiệm, tôi nhận ra rằng vấn đề là UINavigationControllerthứ đang kiểm soát của tôi UITableViewkhông ở chế độ xem gốc. Sau khi tôi sửa lỗi đó, nó hiện đang hoạt động như một nhà vô địch.


Bạn có thể vui lòng chia sẻ "làm thế nào" bạn đã làm điều đó?
Brabbeldas

1

Tôi vừa gặp sự cố này và tôi đã mất 3 giờ đầy đủ (2 trong số đó là googling) để khắc phục.

Điều trở nên hữu ích là chỉ cần xóa ứng dụng khỏi thiết bị / trình mô phỏng, làm sạch và sau đó chạy lại .

Hy vọng điều đó sẽ giúp


1
[self.navigationController setDelegate:self];

Đặt người đại diện cho bộ điều khiển chế độ xem gốc.


1

Đối với Swift. Đầu tiên hãy tạo giao thức để gọi những gì bạn muốn gọi trong viewWillAppear

protocol MyViewWillAppearProtocol{func myViewWillAppear()}

Thứ hai, tạo lớp

class ForceUpdateOnViewAppear: NSObject, UINavigationControllerDelegate {
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool){
    if let updatedCntllr: MyViewWillAppearProtocol = viewController as? MyViewWillAppearProtocol{
        updatedCntllr.myViewWillAppear()
    }
}

}

Thứ ba, làm cho phiên bản ForceUpdateOnViewAppear trở thành thành viên của lớp thích hợp có quyền truy cập vào Bộ điều khiển Điều hướng và tồn tại miễn là Bộ điều khiển Điều hướng tồn tại. Nó có thể là ví dụ: bộ điều khiển chế độ xem gốc của bộ điều khiển điều hướng hoặc lớp tạo hoặc trình bày nó. Sau đó, gán phiên bản ForceUpdateOnViewAppear cho thuộc tính đại biểu Bộ điều khiển Điều hướng càng sớm càng tốt.


0

Trong trường hợp của tôi, vấn đề là với hoạt ảnh chuyển tiếp tùy chỉnh. Khi đặt modalPresentationStyle = .custom viewWillAppearkhông được gọi

trong lớp hoạt ảnh chuyển tiếp tùy chỉnh cần các phương thức gọi: beginAppearanceTransitionendAppearanceTransition


0

Trong trường hợp của tôi, đó chỉ là một lỗi kỳ lạ trên trình giả lập ios 12.1. Biến mất sau khi khởi chạy trên thiết bị thực.


0

Tôi đã tạo một lớp giải quyết vấn đề này. Chỉ cần đặt nó làm đại biểu cho bộ điều khiển điều hướng của bạn và triển khai một hoặc hai phương pháp đơn giản trong bộ điều khiển chế độ xem của bạn - sẽ được gọi khi chế độ xem sắp được hiển thị hoặc đã được hiển thị qua NavigationController

Đây là GIST hiển thị mã


0

ViewWillAppear là một phương thức ghi đè của lớp UIViewController nên việc thêm một subView sẽ không gọi viewWillAppear, nhưng khi bạn trình bày, push, pop, show, setFront Hoặc popToRootViewController từ viewController thì viewWillAppear cho viewController đã trình bày sẽ được gọi.


0

Vấn đề của tôi là viewWillAppear không được gọi khi giải nén từ máy tính. Câu trả lời là đặt một lệnh gọi đến viewWillAppear (true) trong hộp thư giãn trong View Controller mà bạn đặt lại

@IBAction func thư giãn (cho thư giãnSegue: UIStoryboardSegue, ViewController tiếp theoVC: Bất kỳ) {

   viewWillAppear(true)
}

-2

Tôi không chắc đây là cùng một vấn đề mà tôi đã giải quyết.
Trong một số trường hợp, phương thức không được thực thi theo cách bình thường, chẳng hạn như "[self methodOne]".

Thử

- (void)viewWillAppear:(BOOL)animated
{
    [self performSelector:@selector(methodOne) 
           withObject:nil afterDelay:0];
}

vấn đề hoàn toàn viewWillAppearkhông được gọi
Vyachaslav Gerchicov

-3

Bạn chỉ nên có 1 UIViewController hoạt động bất kỳ lúc nào. Bất kỳ lượt xem phụ nào bạn muốn thao tác phải chính xác là - subVIEWS - tức là UIView.

Tôi sử dụng một kỹ thuật simlple để quản lý hệ thống phân cấp chế độ xem của mình và vẫn chưa gặp sự cố nào kể từ khi tôi bắt đầu làm mọi việc theo cách này. Có 2 điểm chính:

  • một UIViewController duy nhất nên được sử dụng để quản lý "giá trị màn hình" của ứng dụng của bạn
  • sử dụng UINavigationController để thay đổi chế độ xem

Ý tôi là gì khi nói "giá trị của một màn hình"? Mục đích của nó hơi mơ hồ nhưng nhìn chung đó là một tính năng hoặc một phần của ứng dụng của bạn. Nếu bạn có một vài màn hình có cùng hình nền nhưng các lớp phủ / cửa sổ bật lên khác nhau, v.v., đó phải là 1 bộ điều khiển chế độ xem và một số chế độ xem con. Bạn sẽ không bao giờ thấy mình đang làm việc với 2 bộ điều khiển chế độ xem. Lưu ý rằng bạn vẫn có thể khởi tạo một UIView trong một bộ điều khiển chế độ xem và thêm nó làm chế độ xem phụ của bộ điều khiển chế độ xem khác nếu bạn muốn các khu vực nhất định của màn hình được hiển thị trong nhiều bộ điều khiển chế độ xem.

Đối với UINavigationController - đây là người bạn tốt nhất của bạn! Tắt thanh điều hướng và chỉ định KHÔNG cho hoạt ảnh và bạn có một cách tuyệt vời để chuyển đổi màn hình theo yêu cầu. Bạn có thể đẩy và bật bộ điều khiển chế độ xem nếu chúng nằm trong một hệ thống phân cấp hoặc bạn có thể chuẩn bị một mảng bộ điều khiển chế độ xem (bao gồm một mảng chứa một VC duy nhất) và đặt nó thành ngăn xếp chế độ xem bằng setViewControllers. Điều này cho phép bạn hoàn toàn tự do thay đổi VC, đồng thời đạt được tất cả các lợi thế khi làm việc trong mô hình dự kiến ​​của Apple và tất cả các sự kiện, v.v. được kích hoạt đúng cách.

Đây là những gì tôi làm mỗi khi khởi động ứng dụng:

  • bắt đầu từ một ứng dụng dựa trên cửa sổ
  • thêm một UINavigationController làm rootViewController của cửa sổ
  • thêm bất cứ thứ gì tôi muốn UIViewController đầu tiên của mình trở thành rootViewController của bộ điều khiển nav

(lưu ý bắt đầu từ dựa trên cửa sổ chỉ là sở thích cá nhân - tôi thích tự mình xây dựng mọi thứ để tôi biết chính xác cách chúng được xây dựng. Nó sẽ hoạt động tốt với mẫu dựa trên chế độ xem)

Tất cả các sự kiện cháy một cách chính xác và về cơ bản cuộc sống là tốt. Sau đó, bạn có thể dành toàn bộ thời gian để viết các phần quan trọng của ứng dụng và không phải làm phiền khi cố gắng hack các cấu trúc phân cấp chế độ xem theo cách thủ công.


Không có gì sai khi có nhiều bộ điều khiển chế độ xem đang hoạt động; UIViewController có các phương thức cho phép cấu trúc phân cấp (ví dụ: [addChildViewController:]).
Richard

1
Có nó bây giờ. Năm 2011 thì không. Câu trả lời là chính xác vào thời điểm đó, phải thừa nhận rằng nó không phải là bây giờ.
Nigel Flack
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.