前提條件,存在A和B兩個頁面,A是主界面,A push 到 B
方法一:如果B頁面的返回按鈕要用自定義的按鈕(在iOS7中,如果使用了UINavigationController,那么系統自帶的附加了一個從屏幕左邊緣開始滑動可以實現pop的手勢。但是,如果自定義了navigationItem的leftBarButtonItem,那么這個手勢就會失效。)
在A界面:
- (void)viewDidAppear:(BOOL)animated {self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;//重新設置代理self.navigationController.interactivePopGestureRecognizer.enabled = NO;//本頁面不能右滑}
在B里面:
設置返回按鈕:
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];backBtn.frame = CGRectMake(5, 2, 21, 35);[backBtn setImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];[[backBtn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {[self.navigationController popViewControllerAnimated:YES];}];UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn];self.navigationItem.leftBarButtonItem = backItem;self.navigationController.interactivePopGestureRecognizer.enabled = YES;//最重要的一步
方法二:在A頁面里面(A頁面里面的backBarButtonItem其實就是我們看到的B頁面的返回按鈕,B頁面的leftBar是左側的按鈕,注意優先級,B里面有自定義leftBar,顯示B頁面的,如果沒有,看A界面,如果里面有backBarButtonItem,顯示,如果沒有,就是系統默認的那個)
UIImage* image = [UIImage imageNamed:@"back"];UIBarButtonItem *item = [[UIBarButtonItem alloc] init];[item setBackButtonBackgroundImage:[image resizableImageWithCapInsets:UIEdgeInsetsMake(0, image.size.width, 0, 0)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];[item setBackButtonTitlePositionAdjustment:UIOffsetMake(-400.f, 0) forBarMetrics:UIBarMetricsDefault];self.navigationItem.backBarButtonItem = item;self.navigationItem.backBarButtonItem = item;
我采用的是方法一,方法二我沒有辦法調整返回按鈕的位置
總結
以上所述是小編給大家介紹的iOS app 右滑返回操作的兩種方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
新聞熱點
疑難解答