如何使用 swift 填充我放置在 UITableCell 中的整个 UIScrollView
Posted
技术标签:
【中文标题】如何使用 swift 填充我放置在 UITableCell 中的整个 UIScrollView【英文标题】:How do i fill the entire UIScrollView that i placed inside a UITableCell using swift 【发布时间】:2015-01-15 10:32:13 【问题描述】:我正在制作一个显示节日时间表的应用。这个节日有多个阶段,每个阶段都有多个乐队。我的想法是为每个阶段制作一个包含行的 TableView。然后在那一行我想放置多个按钮,每个按钮代表一个乐队。我使用按钮是因为我想要一个关于乐队/艺术家的后续页面。
到目前为止,我得到的是:我有一个 3 行的 TableView。我只用 1 个按钮填充了行,以检查它是否可以滚动。该按钮填充整个滚动视图。滚动视图比表格单元长 5 倍。
我的问题是:当我滚动时,第一次查看后出现的所有内容都是空白的。而它应该被绿色按钮填充。
我的代码:
class TimeTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
//@IBOutlet var scrollView: UIScrollView!
//var imageView: UIImageView!
@IBOutlet var tableView: UITableView!
override func viewDidLoad()
super.viewDidLoad()
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return self.items.count;
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
//cell.textLabel?.text = self.items[indexPath.row]
var scrollview = UIScrollView(frame: cell.bounds)
scrollview.contentSize = CGSizeMake(cell.bounds.width * 5, cell.bounds.height)
scrollview.pagingEnabled = false
var button = UIButton()
button.frame = CGRect(x: 0, y: 0, width: scrollview.frame.size.width, height: scrollview.frame.size.height)
//x: 0, y: 0, width:image.size.width, height:scrollView.frame.size.height
button.backgroundColor = UIColor.greenColor()
button.setTitle("bladiebladiebla juj een button in een scrollview in een table cell, nu nog een aantal buttons", forState: UIControlState.Normal)
//var label = UILabel(frame: scrollview.bounds)
//label.text = "bladiebladiebla juj een label in een scrollview in een table cell, nu nog een aantal buttons"
scrollview.addSubview(button)
cell.contentView.addSubview(scrollview)
return cell
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!)
println("You selected cell #\(indexPath.row)!")
【问题讨论】:
【参考方案1】:我已经实现了您的代码,并在其中进行了一些类似的更改...
在开始时,Scrollview 没有正确的单元格高度,因为我在 xib 中定义为 80,但 Scrollview 高度显示在 50 左右
我做了 scrollview.removeFromSuperView 因为当我在 didSelceting 单元格之后返回时,它显示正确的单元格大小 80 并将固定滚动高度作为单元格高度..
//change by me..
var scrollview = UIScrollView()
----------------------------------------------
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ->
UITableViewCell
var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
//cell.textLabel?.text = self.items[indexPath.row]
//change by me..
scrollview.removeFromSuperview()
scrollview = UIScrollView(frame: CGRectMake(0, 0, cell.frame.size.width, 80))
scrollview.contentSize = CGSizeMake(cell.frame.size.width * 5, cell.frame.size.height)
scrollview.pagingEnabled = false
var button = UIButton()
button.frame = CGRect(x: 0, y: 0, width: scrollview.frame.size.width, height: scrollview.frame.size.height)
//x: 0, y: 0, width:image.size.width, height:scrollView.frame.size.height
button.backgroundColor = UIColor.greenColor()
button.setTitle("bladiebladiebla juj een button in een scrollview in een table cell, nu nog een aantal buttons", forState: UIControlState.Normal)
//var label = UILabel(frame: scrollview.bounds)
//label.text = "bladiebladiebla juj een label in een scrollview in een table cell, nu nog een aantal buttons"
var button1 = UIButton()
button1.frame = CGRect(x: button.frame.size.width, y: 0, width: scrollview.frame.size.width, height: scrollview.frame.size.height)
//x: 0, y: 0, width:image.size.width, height:scrollView.frame.size.height
button1.backgroundColor = UIColor.yellowColor()
button1.setTitle("bladiebladiebla juj een button in een scrollview in een table cell, nu nog een aantal buttons", forState: UIControlState.Normal)
//var label = UILabel(frame: scrollview.bounds)
//label.text = "bladiebladiebla juj een label in een scrollview in een table cell, nu nog een aantal buttons"
scrollview.addSubview(button)
scrollview.addSubview(button1)
cell.contentView.addSubview(scrollview)
return cell
【讨论】:
以上是关于如何使用 swift 填充我放置在 UITableCell 中的整个 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift 3 中为 UITable 视图提供单元格缩进级别?