2012-10-11 68 views
0

我有一個UITableViewController它包含一個查看和一個表視圖部分UITableViewController - 限制滾動

查看包含一個標籤,該標籤指示表的標題。

我的問題是,滾動包括查看。我想要的是保持查看靜態(排除滾動)並僅滾動。 (我使用靜態單元格)

謝謝。

+0

將視圖放在'UITableView'之外。 – robertvojta

+1

他不能在'UITableViewController'中做到這一點。 – akashivskyy

+0

他不能做什麼?只是不要把視圖放入'UITableView [Cell]'就是這樣。 – robertvojta

回答

0

一個UITableViewController的層次是

- UIView 
-- UIScrollView 
---- UITableView 

最初,你在UITableView的修改時的物品,所以你要補充一點,你不想滾動到UIView的部分(外面是我們的scrollView)。所以你需要像這樣調用超級好幾次:

[self.superview.superview.view addSubview:viewThatDoesNotScroll];

+0

對不起,但我不明白你的意思。你能否給我更多的細節。我使用靜態單元格,當我創建自定義類時,我會得到「靜態表格視圖只有在嵌入UITableViewController實例時纔有效」。謝謝。 – tchike

+0

對不起,但這不是UITableViewController的視圖層次結構。 UITableViewController的視圖屬性指向UITableView記錄。而UITableView是UIScrollView的一個子類。你不應該在UIS​​crollView中放置一個UITableView對象。 – J2theC

0

由於UITableViewUIScrollView一個子類:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // mySubview is an instance variable, declared in .h file 
    [self.tableView addSubview:mySubview]; 
    // here goes the rest of your code 
} 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if(scrollView == self.tableView) { 
     mySubview.frame = CGRectMake(mySubview.frame.origin.x, scrollView.contentOffset.y, mySubview.frame.size.width, mySubview.frame.size.height); 
    } 
} 

的代碼是從WWDC '10或'11(我不記得了)拍攝,所以我敢肯定它是最合適的方式做它。

說明:-viewDidLoad你創建你的視圖,並添加它作爲你的tableView的子視圖。你可以在-loadView-init - 這並不重要。最重要的行在-scrollViewDidScroll:方法中。每當用戶拖動scrollView時都會調用此方法,因此您可以簡單地將子視圖的origin.y設置爲scrollView的contentOffset.y

0

不要UITableViewController。使用UIViewController並管理UITableView對象之外的視圖。如果需要,還可以實現UIViewControllerContainment來管理自定義視圖控制器中的不同視圖和不同視圖控制器。