這個問題屬于自己沒有仔細考慮viewController生命周期引起的。
在viewDidLoad里添加代碼:
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
如果只有兩級頁面,在二級頁面添加這個設置,這樣右滑返回是沒問題的。
但是當含有三級或者三級以上頁面時,我們在除了一級頁面之外的其他頁面都添加這個代碼,會發現只有最后一級能右滑返回,其他頁面都失效了。
這是因為:
當棧頂viewController
被Pop出棧時self被銷毀,即delegate被置為nil,因為其他viewController的viewDidLoad這時候不執行,代理方法自然也不會執行,因此導致其他頁面右滑返回失效。
解決辦法:將以上代理設置轉移到viewWillAppear方法中。
以后開發要非常重視生命周期這個東西。