自定义后退按钮工作像真正的后退按钮xcode

时间:2012-08-25 02:28:20

标签: xcode xcode4 xcode4.3

我正在制作一个自定义的后退按钮,它与真正的后退按钮完全相同。下面是我的代码

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];
}

实际上,它有效,但它创造的方向是从右到左。但我希望页面从左边移动到右边,因为它会回到最近的页面

谢谢你!

1 个答案:

答案 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];
}

目前,您的后退按钮不能像真正的后退按钮那样工作,因为不是将最后一个视图控制器从堆栈中弹出(也是释放对象),实际上您不断在堆栈上推送新的视图控制器。如果这个堆栈太大,你可能会遇到一些问题。