Tôi hiện đang cố gắng trình bày một bộ điều khiển xem bằng cách sử dụng một UIPresentationController
. Vấn đề của tôi là, khi đại biểu chuyển đổi tùy chỉnh của tôi gọiTrình bày Bộ điều khiển là Nill trong Chuyển tiếp Đại biểu
func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController!, sourceViewController source: UIViewController) -> UIPresentationController?
Trình điều khiển trình bày của tôi là nil
khiến nó ném một ngoại lệ. Tôi trình bày nó từ một bộ điều khiển xem được nhúng trong một bộ điều khiển điều hướng được nhúng trong một bộ điều khiển thanh tab. Tôi đã cố gắng trình bày nó từ các bộ điều khiển cũng như cùng một vấn đề. Nó cũng hoạt động đúng khi không có bài thuyết trình tùy chỉnh phương thức nhưng mục tiêu của tôi là tùy chỉnh nó. Tôi gọi nó khi một nút được chọn và mã được cung cấp bên dưới. mapTransitionDelegate
là đại biểu chuyển tiếp tùy chỉnh của tôi mà tôi giữ lại trong thuộc tính lớp học. Ngoài ra, EnlargedMapViewController()
được khởi tạo để có một bản trình bày phương thức tùy chỉnh để đại biểu chuyển tiếp của tôi được gọi.
var enlargedMapController = EnlargedMapViewController();
enlargedMapController.transitioningDelegate = mapTransitionDelegate;
presentViewController(enlargedMapController, animated: true, completion: nil);
Tôi rất muốn tìm hiểu lý do sự cố này xảy ra với kiến thức trong tương lai. Hiện tại, lớp con của tôi UIPresentationController
thậm chí không được khởi tạo vì ngoại lệ này.
là 'EnlargedMapViewController' được tạo trong Trình tạo giao diện? Nếu có, đó là một cái bẫy phổ biến. Sử dụng 'IBOutlet' thay vì tạo một cá thể lập trình. – vadian
EnlargedMapViewController() được tạo tất cả trong mã. Tuy nhiên, ứng dụng của tôi dựa trên bảng phân cảnh chủ yếu ngoại trừ bộ điều khiển chế độ xem này – user2532485