通常情況一般都是由view中的觸發(fā)者(button)之類的事件,觸發(fā)block,在控制器中處理。但是其實是可以在view中處理控制器跳轉的。
在controller不需要回傳數(shù)據(jù)的時候,可以在view中這樣寫,能夠減少控制器中的代碼。
大概思路:點擊控件始終是加載在控制器上的,不斷取superview,取到控制器時,這個控制器就是我們事件的響應者。
/// 處理事件
- (void)tapAction {
SearchDestinationVC *controller = [[SearchDestinationVC alloc]init];
controller.hidesBottomBarWhenPushed = YES ;
//通過找到的控制器進行跳轉
[[self viewController].navigationController pushViewController:controller animated:YES] ;
}
找到view的控制器:返回view所加載在的控制器
/// 找到view的控制器:返回view所加載在的控制器
- (UIViewController *)viewController {
for (UIView * superView = [self superview]; superView; superView = superView.superview) {
UIResponder *nextResponder = [superView nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]]) {
return (UIViewController *)nextResponder;
}
}
return nil;
}