簡體   English   中英

.view UITableViewController和UICollectionViewController的屬性

[英].view Property of UITableViewController and UICollectionViewController

我試圖在我的集合視圖和表視圖的頂部添加UIView *separatorView ,當相應視圖的contentOffset.y > 0 我通過在viewDidLayoutSubviews添加視圖並將其添加到self.view在我的集合視圖上完成了這項工作。 然后通過使用一些滾動視圖委托方法,我可以使它顯示和隱藏。 這很好用但是對於表視圖,如果我使用相同的概念,則separatorView會與表視圖一起滾動。 我仍然將separatorView添加到self.view但它的行為與集合視圖上的行為不同。 希望separatorView滾動。 我希望它保持在頂部。 我是否正確地認為使表格視圖工作的方法是UIViewController並管理其中的表視圖以及separatorView? 有沒有辦法讓它在我當前的UITableViewController子類中工作?

基本上,為什么self.view滾動表視圖而不是集合視圖? 這似乎不一致。

謝謝您的幫助。

編輯:添加圖片以展示想法。

在此輸入圖像描述

self.viewUITableViewController是一個UITableView因為tableViewController覆蓋loadView視圖控制器上。

如果您運行以下代碼:

UITableViewController *tableViewController = [[UITableViewController alloc] init];

NSLog(@"%@",tableViewController.view);

您將獲得以下控制台輸出:

2014-05-13 21:19:02.823 Test[28681:60b] <UITableView: 0x109834200; frame = (0 20; 320 548); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x109548f00>; layer = <CALayer: 0x109548c40>; contentOffset: {0, 0}>

正如您所看到的, self.view不是UIView ,而是UITableView 您的分隔符視圖使用tableView滾動,因為調用:

[self.view addSubview:separatorView];

與調用完全相同:

[self.tableView addSubview:separatorView];

如果您希望分隔符保持在固定位置,則需要將其添加到tableView / collectionView的superview而不是滾動視圖本身。

這不是在發生的原因UICollectionViewController是因為self.view實際上是一個UICollectionViewControllerWrapperView對象。 這是一個私有類,但從它的名稱來判斷,我假設它是一個包裝UICollectionViewUIView

實現您想要的最明智的方法是使用自定義容器視圖(子視圖控制器) ,它將是包含分隔符視圖和tableView / collectionView控制器的UIViewController子類。

如果您不想添加子視圖控制器,那么另一種選擇就像您說的那樣,創建一個UIViewController子類並在視圖控制器視圖中添加您的分隔符視圖和tableView作為子視圖但是如果您不使用UITableViewController你失去了額外的功能,比如自動調整tableView的contentInsets以獲得鍵盤外觀等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM