![](/img/trans.png)
[英]loading a UITableViewController from a selected indexpath in a 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.view
在UITableViewController
是一個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
對象。 這是一個私有類,但從它的名稱來判斷,我假設它是一個包裝UICollectionView
的UIView
。
實現您想要的最明智的方法是使用自定義容器視圖(子視圖控制器) ,它將是包含分隔符視圖和tableView / collectionView控制器的UIViewController
子類。
如果您不想添加子視圖控制器,那么另一種選擇就像您說的那樣,創建一個UIViewController
子類並在視圖控制器視圖中添加您的分隔符視圖和tableView作為子視圖但是如果您不使用UITableViewController
你失去了額外的功能,比如自動調整tableView的contentInsets以獲得鍵盤外觀等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.