在項目中有時候會有調(diào)查問卷的功能,介于該功能太過簡單,一般都是從后臺獲取到問題以及問題的選項,在客戶端一般都是使用UITableView來實現(xiàn)的,但是出來這么一個問題:有的調(diào)查問卷有五六十個,總不可能新建五六十個頁面壓棧跳轉(zhuǎn)吧,那當然是不可能滴。
我們可以新建一個頁面使用UITableView來承載和展示問卷調(diào)查的問題和選項,當翻頁的時候直接使用動畫實現(xiàn)類似翻頁的效果并切換UITableView的數(shù)據(jù)源展示,這樣就會有更好的用戶體驗。廢話就這么多,接下來我就直接提供思路以及部分核心代碼。
1. 新建頁面,tableview布局代理等的實現(xiàn),在頁面中定義一個變量currentIndex(默認0)用于存儲當前頁碼數(shù)(0~n)
2. 根據(jù)需求,如果要求在頁面上添加兩個按鈕來上翻頁和下翻頁,那就直接創(chuàng)建按鈕并添加點擊方法,如果不用按鈕,使用手勢的話,就可以直接給tableview添加左滑和右滑手勢來實現(xiàn)翻頁(這里以手勢為例子講解,順便復習一下手勢)。
// 創(chuàng)建滑動手勢
UISwipeGestureRecognizer *left = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(leftAction:)];
// 指定滑動手勢的方向
left.direction = UISwipeGestureRecognizerDirectionLeft;
// 記得添加到tableview上
[self.tableV addGestureRecognizer:left];
右滑手勢也是同理,并且實現(xiàn)左滑右滑的方法。
3. 重要的步驟來了,那就是實現(xiàn)翻頁的效果,直接上代碼。
/// 跳轉(zhuǎn)到下一頁
-(void)pushToNextPage{
if (currentIndex < (self.tableArr.count-1)) {
currentIndex++;
//動畫
CATransition * animation = [CATransition animation];
animation.type = kCATransitionReveal; //動畫切換風格
animation.subtype = kCATransitionFromRight; //動畫切換方向
animation.duration = 0.3f;
[_tableV.layer addAnimation:animation forKey:nil];
[_tableV reloadData];
}else if(currentIndex == (self.tableArr.count-1)){
//處于最后一頁,做提交操作
DLog(@"現(xiàn)在已經(jīng)是最后一頁了");
}
}
/// 返回到上一頁
-(void)popToPreviousPage{
if (currentIndex>0) {
currentIndex--;
//動畫
CATransition * animation = [CATransition animation];
animation.type = kCATransitionMoveIn; //動畫切換風格
animation.subtype = kCATransitionFromLeft; //動畫切換方向
animation.duration = 0.3f;
[_tableV.layer addAnimation:animation forKey:nil];
[_tableV reloadData];
}else if (currentIndex == 0) {
DLog(@"現(xiàn)在已經(jīng)是第一頁了");
}
}