2013-03-23 122 views
5

我有一個視圖控制器(讓我們稱之爲MainViewContoller)出現3個不同的表格(一次一個),用戶可以點擊一個段控件在這些表格之間切換。點擊狀態欄時滾動到頂部

爲了呈現那些3個表,MainViewContoller有3個其他視圖控制器(A,B和C),每個都具有UITableView作爲一個子視圖和處理它自己的數據。
MainViewContoller被加載時,它啓動控制器A,B和C,並添加其tableViews到它的視圖:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    ViewControllerA *vcA = [ViewControllerA alloc] init]; 
    [self.view addSubview:vcA.view]; 

    ViewControllerB *vcB = [ViewControllerB alloc] init]; 
    [self.view addSubview:vcB.view]; 

    ViewControllerC *vcC = [ViewControllerC alloc] init]; 
    [self.view addSubview:vcC.view]; 
} 

因此,例如,當用戶點擊分段控制和選擇A中,MainViewContoller隱藏表乙和C,取消隱藏表A.事情是這樣的:

if (userTapOnA) { 
    self.viewControllerA.tableView.hidden = NO; 
    self.viewControllerB.tableView.hidden = YES; 
    self.viewControllerC.tableView.hidden = YES; 
} 

問題:

當用戶點擊狀態欄我想當前可見表格將滾動到頂部。
這種行爲是非常基本的,使用常規視圖控制器時可以免費獲得它,但正如您所看到的,我的視圖控制器不是常規的。
我想通過使用其他控制器視圖爲MainViewContoller視圖我打破了默認行爲,所以我的MainViewContoller不處理狀態欄的水龍頭。

有人知道如何解決這個問題嗎?

回答

26

這是直接從UIScrollView的頭文件:

/*當用戶點擊狀態條中, 觸摸下方的滾動視圖最接近狀態欄將滾動到頂部,但 只有當其scrollsToTop屬性爲YES時,其代表不爲shouldScrollViewScrollToTop才返回NO,並且它尚未位於 的頂部。在iPhone上,我們只有在有一個 屏幕滾動視圖scrollsToTop == YES時才執行此手勢。如果發現不止一個是 ,則不會滾動。 */

@property(nonatomic)BOOL scrollsToTop; //默認是YES。

因此,在你的情況下,將所有的ScrollsToTop設置爲NO,除了你想在那個特定時刻啓用的那個。

+0

10倍,這是非常有幫助:) – Eyal 2013-03-23 17:41:54

2

您應該將嵌套控制器註冊爲子控制器。

[self addChildViewController:vcA]; 
[self addChildViewController:vcB]; 
[self addChildViewController:vcC]; 

我不確定這是否有助於解決您的問題,但這是正確的做法。

相關問題