【作者前言】:13年入圈放祟,分享些本人工作中遇到的點點滴滴那些事兒,17年剛開始寫博客呻右,高手勿噴跪妥!以分享交流為主,歡迎各路豪杰點評改進声滥!
1.應(yīng)用場景:
操作圖層之間的跳轉(zhuǎn)邏輯時眉撵,時常需要我們區(qū)分頁面在返回時使用的方法,pop落塑、 dismiss之間做選擇
2.實現(xiàn)目標:
在返回的方法中纽疟,自動處理。如果能夠dismiss就用dismiss憾赁,反之用pop污朽。
3.代碼說明:
方法一:通過ViewController的屬性presentingViewController
判斷當前頁面是否是被present出的,來確定采用dismiss方法
- (void)backAction
{
if (self.presentingViewController)
{
[self dismissViewControllerAnimated:YES completion:nil];
}
else
{
[self.navigationController popViewControllerAnimated:YES];
}
方法二:通過NavgationController的屬性topViewController
判斷當前頁面是否是被push出的最上層頁面龙考,來確定采用pop方法
- (void)backAction
{
if (self.navigationController.topViewController == self)
{
[self.navigationController popViewControllerAnimated:YES];
}
else
{
[self dismissViewControllerAnimated:YES completion:nil];
}
}
方法三:通過NavgationController的屬性viewcontrollers
數(shù)組索引蟆肆,來判斷當前頁面是否是被push過,來確定采用dismiss方法
- (void)backAction
{
if ([self.navigationController.viewControllers.firstObject isEqual:self])
{//當前頁面尚未被Push過
[self dismissViewControllerAnimated:YES completion:nil];
}
else
{
[self.navigationController popViewControllerAnimated:YES];
}
}
- (void)backAction
{
if ([self.navigationController.viewControllers indexOfObject:self] == 0)
{//當前頁面尚未被Push過
[self dismissViewControllerAnimated:YES completion:nil];
}
else
{
[self.navigationController popViewControllerAnimated:YES];
}
}