문제 설명
프로그래밍 방식으로 탐색 컨트롤러의 초기 viewController 설정(레이어 SDK) (Set initial viewController in Navigation controller programmatically (Layer SDK))
내 애플리케이션에 레이어 SDK를 추가하고 싶습니다(사용 Swift).
여기에 있는 모든 뷰 컨트롤러는 프로그래밍 방식으로 생성됩니다. 그러므로 나는 그들에게 구걸할 수 없다. 내 응용 프로그램(UITabBarController
)에 4개의 탭이 있습니다. 그 중 하나가 채팅입니다. 채팅 탭에서 UINavigationController
에 대한 segue를 만들었습니다. 이제 이 UINavigationController
에 conversationListViewController
를 로드하고 싶습니다. 이를 위해 이 UINavigationController 즉, ConversationListViewController
에 대한 클래스를 만들고 다음 코드를 추가했습니다.
class ChatNavigationViewController: UINavigationController {
var conversationListViewController: ConversationListViewController!
var layerClient: LYRClient!
override func viewDidLoad() {
let appDelegate = UIApplication.sharedApplication().delegate as!AppDelegate
self.layerClient = appDelegate.layerClient
self.conversationListViewController = ConversationListViewController(layerClient: appDelegate.layerClient)
self.conversationListViewController.displaysAvatarItem = true
self.navigationController!.pushViewController(self.conversationListViewController, animated: true)
}
}
하지만 이것은 작동하지 않습니다. 그리고 이런 종류의 효과를 줍니다. ConversationViewController
는 UINavigationController
에 로드되지 않습니다. 내가 올바른 방법으로하고 있는지 확실하지 않습니다. 올바른 방법을 찾고 있지만 찾을 수 없습니다.
참조 솔루션
방법 1:
I Solved it. I dragged new NavigationViewController
and added ConversationListViewController
to rootviewController.I think i should try this first. Anyways thanks guys for your help.
방법 2:
Because you want to do this programatically:
You need to manually initialize the controller before stacking it up on the Navigation Controller. Try this:
navigationController?.pushViewController(self.conversationListViewController.init(), animated: true)
(by Nishant Dongare、Nishant Dongare、Nisarg Shah)