2013-01-22 23 views
4

在我的情況下,我有UIView和UITableView控制器。我想要的是通過滑動UIView來滾動表格視圖。我已經添加了向上滑動並向下滑動了UIView的手勢。當我在該視圖上滑動時,沿着滑動方向滾動表格視圖。它是否可行?iPhone滾動UITableview通過刷出表格視圖

+3

是的,一個簡單的方法是使用的UITableView作爲一個正常的UIScrollView(UITableView的是一個UIScrollView,從類繼承,所以你可以使用所有的UIScrollView的方法它和相關的協議方法) – meronix

+0

@meronix:謝謝你的快速回放。冷,請發佈一些示例代碼? – Guru

+0

@Muhammad:UIView不是UITableview的子類 – Guru

回答

2

調用此方法。 此方法將禁用滾動tableview以防止手動滾動。假設您有100行高度30,myview是必須執行滾動的視圖。滑動手勢是在MyView的加入,它設置輕掃的方向是很重要的

- (無效)initialSetup {

[self.tableView setScrollEnabled:NO]; 
int numberOfRows=100; 
int rowHeight=30; 
myview=[[UIView alloc]initWithFrame:CGRectMake(280, 0, 30, numberOfRows*rowHeight)]; 
[myview setBackgroundColor:[UIColor yellowColor]]; 
[self.view addSubview:myview]; 
UISwipeGestureRecognizer *swipeDown=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(motion:)]; 
[swipeDown setDirection:UISwipeGestureRecognizerDirectionDown]; 
[myview addGestureRecognizer:swipeDown]; 
UISwipeGestureRecognizer *swipeUp=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(motion:)]; 
[swipeUp setDirection:UISwipeGestureRecognizerDirectionUp]; 
[myview addGestureRecognizer:swipeUp];} 

當滑動手勢發生任swipeUp或swipeDown的以下方法將被稱爲。 當該方法接收一swipeUp手勢當該方法接收一swipeDown它滾動所述第一當前可見行到它滾動在的tableview頂端 最後目前可見行底部

- (無效)運動:(UISwipeGestureRecognizer *)發件人 {

if (sender.direction==UISwipeGestureRecognizerDirectionUp) { 
    [self.tableView scrollToRowAtIndexPath:[self.tableView.indexPathsForVisibleRows objectAtIndex:[self.tableView.indexPathsForVisibleRows count]-1] atScrollPosition:UITableViewScrollPositionTop animated:YES]; 
}else if(sender.direction==UISwipeGestureRecognizerDirectionDown) 
{ 
    [self.tableView scrollToRowAtIndexPath:[self.tableView.indexPathsForVisibleRows objectAtIndex:0 ] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; 
} 

}

2

//讓MyView的是從中要滾動你的tableview(myTableview)認爲

//現在從viewDidLoad中添加以下行您的viewDidLoad方法

UISwipeGestureRecognizer * swipegesture = [[UISwipeGestureRecognizer alloc]init]; 
swipegesture =[myTableview.gestureRecognizers objectAtIndex:1]; 
[myView addGestureRecognizer:swipegesture];