Nguyên nhân của việc này là các viewController tổ tiên không được thiết lập một cách chính xác. ví dụ tưởng tượng:
UIViewController * myController = ... // a view controller without a proper ancestor
bây giờ:
myController.tabBarController == nil
Do đó:
[myController presentModalViewController:otherController];
Sẽ thất bại (bằng cách hiển thị lên dưới thanh tab). Việc sửa chữa là thêm MyController để cúng tổ tiên của nó thông qua
[parentController addChildViewController:myController];
Bây giờ, parentController
phải được bổ sung vào bộ điều khiển khác trong cùng một cách và vân vân cho đến khi một gốc là tabController của bạn. Tính năng này chỉ khả dụng trong iOS 5 trở lên. Nếu xây dựng cho iOS 4 hoặc trước đó, bạn sẽ phải làm việc xung quanh điều này bằng cách đảm bảo rằng tất cả các bộ điều khiển của bạn được thêm trực tiếp vào bộ điều khiển UINav hoặc UITab. Nếu điều này là không thể, bạn sẽ phải truy cập UITabBarController thông qua một biến toàn cầu.
tôi đã sử dụng toàn cầu Cảm ơn –