2014-07-11 66 views
0

在我的UIViewController我有UIScrollView,然後在UITableView裏面。即使沒有UIScrollView,我也會收到奇怪的行爲。當我的ViewController不是子類別時,我的UITableView(自己)表現良好。我將VC和突然之間的TV劃分在我的navBar下面。我沒有做過特別的事情,我可以看到會導致這種變化,但是由於我在這些年來第一次使用AutoLayout,因此可能會出現我忽略的情況。無論如何,我然後用這個手動解決這個問題:Swift - UITableView在UIScrollView內容插入不正確與Autolayout

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews(); 

    var currentInsets: UIEdgeInsets = tableView.contentInset; 
    println("Inset from top", self.topLayoutGuide.length) 
    self.tableView.contentInset = UIEdgeInsets(top: self.topLayoutGuide.length, left: currentInsets.bottom, bottom: currentInsets.left, right: currentInsets.right); 
} 

一切按預期工作(即使我不應該這樣做)。然後我在SV中添加混音,然後再次發生一些混亂。屏幕加載TVy= -64巧合(絕對不是巧合)它是Inset設置爲。在任何地方觸摸,它會對齊到y= 0(它應該始終捕捉並開始),然後稍微滾動它就會跳到y= +49TV似乎有3個點如上所述,但我不知道爲什麼。 SV設置爲具有滾動方向鎖定和分頁功能。這是contentOffsetscreen height(這就是爲什麼我不明白爲什麼會導致這些問題)×2 * screen width。如果我刪除了我的手動修補程序inset,正如預期的那樣,問題只是向上移動了64.只有TV報告相同的高度爲0 & -64(無法使其對齊到+49),這是可以理解的不應該將滾動代理中的插值計入y值。

無論如何,所以我絕對不知道爲什麼我的內的UITableView正在播放它的程度。我始終覺得UIScrollView會自動處理它的直接子元素的任何內容插入,包括TableViews

如果有人可以對此有所瞭解,我將不勝感激。

的問候,
邁克

UPDATE:這個問題,因爲我已經發現,在於我設置我的contentOffsetviewDidLayoutSubviews()我目前做這樣的方式:scrollView.contentSize = CGSizeMake(self.view.frame.width * 2 , self.view.frame.height);。仍然不確定爲什麼這行代碼會導致我遇到的無數問題。

+0

您應該取消插入工作的自動佈局。 – Anton

+0

@Anton剛剛禁用了Autolayout,但是當我在更新中提到的代碼行出現時,問題仍然存在。 – Mackey18

回答

1

最後使用UIPageViewController來實現我想要的功能,遠比使用UIScrollView更好。

相關問題