UINavigationController的popViewControllerAnimated問題

UINavigationController是iOS編程中的一個view controller的容器,通過棧管理viewControllers,每一次push操作都將在棧頂添加一個view controller,然后通過pop將該棧最頂端的controller移除。
我們在工程中,通常會在controller中執(zhí)行

// 移除棧頂controller。
[self.navigationController popViewControllerAnimated:NO];

假設現在有UIViewController的子類對象,A、B、C、D。
//將A控制器設置為根控制器

    UINavigationController *myFirstCtrl = [[UINavigationController alloc] initWithRootViewController:myFirstCtrl];
    self.window.rootViewController = m_firstCtrl;

    //在A控制器中,push B控制器
    [self.navigationController pushViewController:B animated:NO];
    //在B控制器中,push C控制器
    [self.navigationController pushViewController:B animated:NO];
    //在C控制器中,push D控制器
    [self.navigationController pushViewController:B animated:NO];
    ````
則此時A控制器的棧中,有四個元素,我們認為在B、C、D中都沒有pop操作,此時,在A控制器中,執(zhí)行

[self.navigationController popViewControllerAnimated:NO];

則是將D控制器從棧中移除,并非我們理解的將A控制器本身移除。同樣,再次執(zhí)行時,是將C控制器移除。如果想退到A,則執(zhí)行:

[self.navigationController popToViewController:A animated:YES];

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容