亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

viewWillDisappear:確定是彈出視圖控制器還是顯示子視圖控制器

viewWillDisappear:確定是彈出視圖控制器還是顯示子視圖控制器

iOS
哈士奇WWW 2019-10-15 10:16:17
我正在努力找到解決這個問題的好方法。在視圖控制器的-viewWillDisappear:方法中,我需要找到一種方法來確定是由于視圖控制器被推到導航控制器的堆棧上,還是因為視圖控制器因彈出而消失了。目前,我正在設置諸如的標志,isShowingChildViewController但是它變得相當復雜。我認為我可以檢測到它的唯一方法是該-dealloc方法。
查看完整描述

3 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

您可以使用以下內容。


- (void)viewWillDisappear:(BOOL)animated {

  [super viewWillDisappear:animated];

  NSArray *viewControllers = self.navigationController.viewControllers;

  if (viewControllers.count > 1 && [viewControllers objectAtIndex:viewControllers.count-2] == self) {

    // View is disappearing because a new view controller was pushed onto the stack

    NSLog(@"New view controller was pushed");

  } else if ([viewControllers indexOfObject:self] == NSNotFound) {

    // View is disappearing because it was popped from the stack

    NSLog(@"View controller was popped");

  }

}

當然,這是可能的,因為在調用viewWillDisappear時,UINavigationController的視圖控制器堆棧(通過viewControllers屬性公開)已經更新。


查看完整回答
反對 回復 2019-10-15
?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

我認為最簡單的方法是:


 - (void)viewWillDisappear:(BOOL)animated

{

    if ([self isMovingFromParentViewController])

    {

        NSLog(@"View controller was popped");

    }

    else

    {

        NSLog(@"New view controller was pushed");

    }

    [super viewWillDisappear:animated];

}

迅速:


override func viewWillDisappear(animated: Bool)

{

    if isMovingFromParentViewController

    {

        print("View controller was popped")

    }

    else

    {

        print("New view controller was pushed")

    }

    super.viewWillDisappear(animated)

}


查看完整回答
反對 回復 2019-10-15
  • 3 回答
  • 0 關注
  • 627 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號