本文我們來分享在ios開發中如何通過自定義按鈕並跳轉到另外一個視圖的學習實例,這種場景在ios開發中很常用。
剛學iOS不久,雖然視圖切換能直接用stroryboard創建,拖根線就完事了!但不知道為嘛,還是感覺iOS開發中代碼控制視圖靈活方便。
不多說了,開始今天的筆記:
新建工程,不多說啦!我喜歡用Empty Application,創建完成後,新建兩個UIViewController類,假設A和B吧!!哈哈
這兒將appDelegate中的代碼就省了!!哈哈。相信能看到這兒的人,也懂得如何設置root視圖了
我們要實現的是,從A點擊一個按鈕,彈出來B窗口,然後點擊B窗口的一個按鈕,返回到A窗口。
直接開始代碼:
A:
- (void)viewDidLoad
{
[super viewDidLoad];
//設置視圖背景顏色
self.view.backgroundColor = [UIColor groupTableViewBackgroundColor];
//添加彈出模態視圖按鈕
UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
//設置按鈕位置和大小
[button setFrame:CGRectMake(120, 220, 80, 40)];
//設置按鈕文字及狀態
[button setTitle:@"模態視圖" forState:UIControlStateNormal];
//添加動作綁定
[button addTarget:self action:@selector(modelViewGO) forControlEvents:UIControlEventTouchUpInside];
//添加進視圖
[self.view addSubview:button];
}
-(void) modelViewGO
{
BViewController * modalView = [[BViewController alloc]init];
modalView.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:modalView animated:YES completion:nil];
// [modalView release];
}
然後在B視圖中,添加返回按鈕及相關代碼:
B:
- (void)viewDidLoad
{
//和A視圖差不多的東西,不解釋啦!!
[super viewDidLoad];
self.view.backgroundColor = [UIColor purpleColor];
UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(130, 50, 60, 20)];
[button setTitle:@"返回" forState:UIControlStateNormal];
[button addTarget:self action:@selector(back ) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
-(void)back
{
//下面這行代碼作用就是將彈出的模態視圖移除,第一個yes表示移除的時候有動畫效果,第二參數是設置一個回調,當模態視圖移除消失後,會回到這裡,可以在這裡隨便寫句話打個斷點,試一下就知道確實會回調到這個方法
// [self dismissViewControllerAnimated:YES completion:nil]; 或帶有回調的如下方法
[self dismissViewControllerAnimated:YES completion:^{
NSLog(@"back");//這裡打個斷點,點擊按鈕模態視圖移除後會回到這裡
//ios 5.0以上可以用該方法
}];
}
程序默認的動畫效果是從下往上彈出,可以改modalTransitionStyle換成其他效果
modalView.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
typedef NS_ENUM(NSInteger, UIModalTransitionStyle) {
UIModalTransitionStyleCoverVertical = 0,//默認垂直向上
UIModalTransitionStyleFlipHorizontal, 翻轉效果
UIModalTransitionStyleCrossDissolve,淡入淡出
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_3_2
UIModalTransitionStylePartialCurl,翻頁效果
#endif
};
需要注意的地方 :1.在彈出的模態視圖上點擊返回按鈕後,該視圖對象徹底被釋放了,記得要將添加到該視圖上的一些對象都寫在dealloc方法中