我正在制作一个自定义的后退按钮,它与真正的后退按钮完全相同。下面是我的代码
UIButton *cusBack = [UIButton buttonWithType:101];
[cusBack setTitle:@"Back" forState:UIControlStateNormal];
[cusBack addTarget:self action:@selector(clickBack) forControlEvents:UIControlEventTouchUpInside];
self.view addSubView:cusBack;
这是我的选择器:
-(void)clickBack{
PrevPage *pPage = [[PrevPage alloc] init];
[self.navigationController pushViewController:pPage animated:YES];
[pPage release];
}
实际上,它有效,但它创造的方向是从右到左。但我希望页面从左边移动到右边,因为它会回到最近的页面
谢谢你!答案 0 :(得分:0)
如果你想要与后退按钮具有相同的行为,你应该尝试另一种方法:
-(void)clickBack{ //Your presenting view controller will always be the last view controller on the stack.
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-1] animated:YES];
}
此外,如果您需要对以前的视图控制器进行一些更改,您需要做的就是导入它的头文件,然后在弹出视图控制器之前可以使用它的属性和公共方法。
#import "MyPreviousViewController.h"
...
-(void)clickBack{
[self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-1].title = @"Change title for previous view controller";
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-1] animated:YES];
}
目前,您的后退按钮不能像真正的后退按钮那样工作,因为不是将最后一个视图控制器从堆栈中弹出(也是释放对象),实际上您不断在堆栈上推送新的视图控制器。如果这个堆栈太大,你可能会遇到一些问题。