為了做到數據與視圖的分離,我們一般會將一個頁面的局部視圖以自定義UIView的方式獨立出來,如果在該視圖中有觸發事件(事件處理不需要父視圖的上下文),就會遇到在UIView中獲取UIViewController的情況,下面是具體實現方法。
#pragma mark - 獲取當前view的viewcontroller
+ (UIViewController *)getCurrentViewController:(UIView ) currentView
{
for (UIView next = [currentView superview]; next; next = next.superview)
{
UIResponder *nextResponder = [next nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]])
{
return (UIViewController *)nextResponder;
}
}
return nil;
}
UINavigationController有個Property,是一個存儲所有push進navigationcontroller的視圖的集合,是一個棧結構,當我們要POP到某個ViewController的時候,直接用for in 去遍歷viewControllers即可。
<pre><code> @property(nonatomic,copy) NSArray<__kindof UIViewController *> *viewControllers; // The current view controller stack.</code></pre>
<pre>for (UIViewController *viewController in self.navigationController.viewControllers)
{
if ([viewController isKindOfClass:[AccountManageViewController class]])
{
[self.navigationController popToViewController:viewController animated:YES];
}
}
iOS獲取當前view的ViewController、跳轉指定ViewController
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。