如何使用swift填充我放置在UITableCell内的整个UIScrollView

时间:2015-01-15 10:32:14

标签: uitableview swift uiscrollview ios8

我制作的应用程序显示了节日的时间表。该节日有多个阶段,每个多个乐队。我的想法是为每个阶段创建一个包含行的TableView。然后在那一行我想放置多个按钮,每个按钮代表一个乐队。我使用按钮,因为我想要一个乐队/艺术家的后续页面。

到目前为止我得到的是:我有一个包含3行的TableView。我只用一个按钮填充行,以检查它是否滚动好。该按钮填充整个滚动视图。 scrollview比tablecell长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 个答案:

答案 0 :(得分:0)

我已经实现了你的代码,并且做了一些像这样的改变......

开始时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

  }