私が何かばかげていることを祈っていれば私を許してください。私はこのチュートリアルビデオの助けを借りてMMDrawerControllerを統合しようとしています。チュートリアルでAppDelegate(vs viewDidLoad)のUIブートストラップコードでルートビューコントローラを選択
https://www.youtube.com/watch?v=c-Uwa5v_3sc
、次のコードは、アプリデリゲート
var window :UIWindow = UIApplication.sharedApplication().keyWindow!
let rootViewController = window.rootViewController
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let centerViewController = mainStoryboard.instantiateViewControllerWithIdentifier("Category") as! Category
let leftViewController = mainStoryboard.instantiateViewControllerWithIdentifier("Menu") as! Menu
let leftSideNav = UINavigationController(rootViewController: leftViewController)
let centerNav = UINavigationController(rootViewController: centerViewController)
centerContainer = MMDrawerController(centerViewController: centerNav, leftDrawerViewController: leftSideNav)
centerContainer!.openDrawerGestureModeMask = MMOpenDrawerGestureMode.PanningCenterView;
centerContainer!.closeDrawerGestureModeMask = MMCloseDrawerGestureMode.PanningCenterView;
window.rootViewController = centerContainer
window.makeKeyAndVisible()
に追加されますが、私はそれはアプリがcenterViewControllerで始まりますが、私はどのようなこと振る舞い私はそうしないことを行うときこのコードをcenterViewControllerのviewDidLoad()に移動しました。このコードは接続してクラスを開始するだけですが、これは間違っていると思います。
また、あなたの情報については、コレクションビューのセルのタップでこのコードを介してcenterViewControllerを呼び出しています。
var DestViewController = segue.destinationViewController as! UINavigationController
let targetController = DestViewController.topViewController as! Category
このコードが呼び出されるとすぐに、アプリケーションのフリーズやRAMの使用がクラッシュするまで増加し続けます。
ログをviewDidLoad()に入れて、再帰的に呼び出されていることがわかりました。いずれか1つ私はこの問題を解決する方法をお勧めします。
ありがとうございます。
更新:
のviewDidLoad機能は、この
override func viewDidLoad() {
super.viewDidLoad()
//
print("Inside Category")
var window :UIWindow = UIApplication.sharedApplication().keyWindow!
print("1")
let rootViewController = window.rootViewController
print("2")
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
print("3")
let centerViewController = mainStoryboard.instantiateViewControllerWithIdentifier("Category") as! Category
print("4")
let leftViewController = mainStoryboard.instantiateViewControllerWithIdentifier("Menu") as! Menu
let leftSideNav = UINavigationController(rootViewController: leftViewController)
let centerNav = UINavigationController(rootViewController: centerViewController)
centerContainer = MMDrawerController(centerViewController: centerNav, leftDrawerViewController: leftSideNav)
centerContainer!.openDrawerGestureModeMask = MMOpenDrawerGestureMode.PanningCenterView;
centerContainer!.closeDrawerGestureModeMask = MMCloseDrawerGestureMode.PanningCenterView;
window.rootViewController = centerContainer
print("5")
// window.makeKeyWindow()
window.makeKeyAndVisible()
print("6")
//
let tapGestureRecognizerCat = UITapGestureRecognizer(target:self, action:#selector(Category.btnCategoryTapped(_:)))
btnCategory.userInteractionEnabled = true
btnCategory.addGestureRecognizer(tapGestureRecognizerCat)
//
let tapGestureRecognizerSearch = UITapGestureRecognizer(target:self, action:#selector(Category.btnSearchTapped(_:)))
btnSearch.userInteractionEnabled = true
btnSearch.addGestureRecognizer(tapGestureRecognizerSearch)
print("7")
}
ように書きのStackTrace
Inside Category
1
2
3
4
5
6
7
Inside Category
1
2
3
4
5
6
7
Inside Category
1
2
3
4
5
6
7 ... and keeps on going like this.
質問を再帰的に呼び出されている 'viewDidLoad'メソッドで更新してください。また、再帰を示すスタックトレースをポストする。 – rmaddy
@rmaddy質問が更新されました。 –
なぜ 'viewDidLoad'のウィンドウで何かしていますか?それは意味をなさない。 'viewDidLoad'は、View Controllerのビューに必要な設定だけを行う必要があります。それでおしまい。そこの窓に触れないでください。 – rmaddy