簡體   English   中英

在Swift中的UITableViewController頂部添加一個UIView

[英]Add a UIView over the top of UITableViewController in Swift

我目前使用的是UITableViewController(PFQueryTableViewController),我想在TableView的頂部顯示一個UIView。

理想情況下,我想在故事板中執行此操作,因此我可以輕松地為其添加其他標簽/按鈕。 但是,我似乎無法弄清楚如何或如果你能在故事板中做到這一點。 是對的嗎?

我以編程方式嘗試過它。 我首先在頂部創建變量:

var filterLabelView:UIView = UIView()

然后我在ViewDidLoad添加了以下ViewDidLoad

filterLabelView.frame = CGRect(x: self.view.frame.width/2, y: self.view.frame.height/2, width: self.view.frame.width, height: 40)
filterLabelView.center = CGPointMake(self.view.frame.size.width  / 2, self.view.frame.size.height / 2)
filterLabelView.backgroundColor = UIColor.redColor()
self.view.addSubview(filterLabelView) // See below

我也嘗試過:

self.view.insertSubview(filterLabelView, aboveSubview: tableView)

這會創建紅色UIView,但它似乎嵌入到tableview中,因為當我向上和向下滾動時,View會隨之移動。

我想要創造什么

理想情況下,我希望視圖位於屏幕的底部,而不是在用戶滾動時移動。 我想要它的樣子截圖如下:

在此輸入圖像描述

我已經讀過,最好的方法是在其中使用帶有UITableView的UIViewController,但我不想采用這種方法來查看我的應用程序已經構建了多少。

任何人都可以幫我創造這種外觀嗎? 提前致謝

您必須從UIViewController派生才能獲得完整的布局控制。

然后只需在Storyboard中添加一個UITableView實例。 正常約束,邊緣刷新,頂部刷新,並具有customView.top = tableView.bottom 為控制器提供正常插座。

您只需要記住使自定義UIViewController采用通常的dataSource和委托協議,以及在初始化時將自己指定為UITableView屬性的角色(通​​常是viewDidLoad() )。

viewDidAppear()上還有一個與清除所選單元格有關的技巧,但是UITableViewController沒有別的特別之處 - 它只是一個帶有內置tableView屬性的UIViewController ,並且自動分配了委托和一個非常不靈活的布局。

ADDENDUM基於關於如何解決這個問題的評論:這有點像詢問是否有任何方法可以使螺絲刀將釘子釘入木材中。 只需使用正確的工具。 UITableViewController的頂級view屬性是UITableView本身。 在布局調試模式下,請參見下面的庫存UITableViewController ,其他內容為零,零代碼。

這意味着整個視圖樹嵌入在滾動實體中,因此所有子視圖都將隨之滾動。

在故事板中重新做這個VC真的不應該是一件大事。 畢竟,你在cellForRowAtIndexPath和你的dataSource和委托中的渲染代碼一般都不會改變。

附錄2:

不熟悉Parse,這可能是不可能的。 (!!謝謝,Parse。)如果Parse沒有為您提供可以自己嵌入的可分離PFQueryTableView ,則可能采用以下解決方法,但您需要了解Objective-C代碼:

https://www.parse.com/questions/pfquery-tableview-for-uiviewcontroller

在此輸入圖像描述

暫無
暫無

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

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