2015-07-03 20 views
6

單擊第一個屏幕上的按鈕後,用戶將看到包含在標籤欄控制器中的視圖控制器。視圖控制器中有兩個表格視圖,第一個是頂部靜態表格和第二個表格。標籤欄控制器中不在「more」內的視圖控制器正確顯示。如果我選擇「更多」並選擇一個視圖控制器,視圖就會顯示,頂部單元格被按下。爲什麼我的UITableview Y原點根據TabBarController中的位置發生變化

如果我轉到「更多」屏幕,請點擊編輯,然後以任何方式移動視圖控制器的順序,查看通過「更多」顯示正確顯示的控制器。在離開「更多」部分時,不顯示頂部表格單元格(頂部表格)。

我覺得在用戶界面或故事板中存在一個問題似乎是合理的,但是沒有什麼能夠跳出來作爲問題。我已經嘗試了手動設置約束,並使用建議的約束。

此示例項目可在https://github.com/propstm/NavigationStructureTest

Top two images are prior to modifying the order of view controllers in the tab bar controller. The bottom two, after.

回答

2

禁用尺寸類和刪除的「垂直空間頂部佈局引導」約束(頂部的tableView),加銷頂部空間,以超級視圖可以解決這個問題。 也許這是Xcode的一個bug,請參閱this

+0

爲什麼downvote然後upvote?這是答案不可理解? – NSDeveloper

+0

刪除頂部版式指南並在示例應用程序中以及在我的大型客戶端應用程序中使用該引腳都有問題。感謝您分享這個鏈接 - 解決問題的方法不是我自己想要的。 – propstm

3

我只是更新了兩個表VC的約束,那麼這個問題是不存在的。

top tableview constraints

bottom tableview constraints

+0

您使用什麼限制?我已經更新了示例的主分支,故事板上沒有任何問題,並且問題對我仍然存在。 – propstm

+0

請比較您編輯答案的約束 –

+0

這些值對我來說不起作用。頂部佈局指南的頂部空間是-44,它將頂部桌面視圖推到導航欄下方。你能否向樣品項目推送拉請求? – propstm

0

我認爲它與由TabBarController提供的「更多」控制器有自己的導航控制器有關,而且您的故事板設置爲將邊緣延伸到頂部條之外。

儘管您試圖隱藏導航欄,但我認爲它在錯誤的位置完成,並且只應在項目在「更多」控制器中呈現時才需要。它目前實施的方式混淆了頂部佈局指南,這似乎是假設有兩個頂部酒吧,即使其中一個隱藏。

我能夠通過兩種方式解決您的演示項目。由任一:

1)更新故事板並關閉「延伸邊緣」的標籤條上(並設置選項卡欄和頂部條是不透明的):

enter image description here

OR

2)簡化viewWillAppear中/消失和viewDidAppear /消失的方法和標籤欄內時隱藏導航欄多個控制器:

- (void)viewDidAppear:(BOOL)animated{ 
    //self.navigationItem.backBarButtonItem.title = @"HOME"; 

    self.tabBarController.title = @"Entity List"; 

    //Pretty activity indicator 
    [self.topTableView reloadData]; 
} 

- (void)viewWillAppear:(BOOL)animated { 
    if (self.navigationController == self.tabBarController.moreNavigationController) { 
     [self.tabBarController.navigationController setNavigationBarHidden:YES]; 
    } else { 
     [self.navigationController setNavigationBarHidden:NO]; 
    } 
} 

- (void)viewWillDisappear:(BOOL)animated { 
    [self.navigationController.navigationBar setHidden:NO]; 
} 

- (void)viewDidDisappear:(BOOL)animated { 
} 

這確保頂部導航正確顯示,而不會弄亂佈局指南。

相關問題