Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当UIScrollView位于自定义UITableViewCell中时,将UIScrollView的内容大小设置为其帧宽度_Ios_Uitableview_Swift_Uiscrollview_Contentsize - Fatal编程技术网

Ios 当UIScrollView位于自定义UITableViewCell中时,将UIScrollView的内容大小设置为其帧宽度

Ios 当UIScrollView位于自定义UITableViewCell中时,将UIScrollView的内容大小设置为其帧宽度,ios,uitableview,swift,uiscrollview,contentsize,Ios,Uitableview,Swift,Uiscrollview,Contentsize,我已将UIScrollView添加到自定义UITableViewCell 我设计了单元格,在我的故事板中添加了滚动视图,并在那里设置了约束条件。单元格和scrollview的框架显示正确 但是,我不希望我的scrollview水平滚动,因此我希望将contentSize.width属性设置为滚动视图框架的宽度。我正在自定义UITableViewCell类“awakeFromNib方法中为此设置代码 问题是,显然在调整帧的宽度以适应当前大小设备之前调用了此方法,因此我将宽度设置为故事板中的宽度,这

我已将
UIScrollView
添加到自定义
UITableViewCell

我设计了单元格,在我的故事板中添加了
滚动视图
,并在那里设置了约束条件。单元格和scrollview的框架显示正确

但是,我不希望我的
scrollview
水平滚动,因此我希望将
contentSize.width
属性设置为滚动视图框架的宽度。我正在自定义UITableViewCell类“
awakeFromNib
方法中为此设置代码

问题是,显然在调整帧的宽度以适应当前大小设备之前调用了此方法,因此我将宽度设置为故事板中的宽度,这太长了

我在网上看到,调整大小后会调用方法
viewDidLoad
viewDidLayoutSubviews
,但这些是
UIViewController
类中的方法。它们似乎不是
UITableViewCell
类的一部分

我不知道如何获取
UIViewController
中每个自定义单元格的引用,以便在建议的方法中设置值

有人能告诉我怎么做吗,或者我可以把这些代码放在
UITableViewCell
类中的什么位置?谢谢

这是我的UITableViewCell类,供参考

import UIKit

class CustomTableViewCell: UITableViewCell, UIScrollViewDelegate {


    @IBOutlet weak var winLoseValueLabel: UILabel!
    @IBOutlet weak var dateLabel: UILabel!
    @IBOutlet weak var newTotalLabel: UILabel!
    @IBOutlet weak var locationLabel: UILabel!
    @IBOutlet weak var playersScrollView: CustomTableCellScrollView!
    @IBOutlet weak var scrollContentView: UIView!

    var numLinesInScrollView : CGFloat?
    var tblView : UITableView?
    var people : String?


    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
        self.playersScrollView.tblView = tblView
        numLinesInScrollView = 0.0
        self.playersScrollView.contentSize.width = self.scrollContentView.frame.width
        self.playersScrollView.contentSize.height = 100
        self.playersScrollView.backgroundColor = UIColor(red: 1.0, green: 1.0, blue: 0, alpha: 0.25)
        self.playersScrollView.addSubview(self.scrollContentView)
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        //self.playersScrollView.contentSize.width = self.playersScrollView.frame.size.width
        /*****Updating the contentSize did not work in this method either*****/
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        // Configure the view for the selected state
    }
}
这是视图控制器

import UIKit

class FirstViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var tblView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.    
    }

    override func viewDidLayoutSubviews(){
        super.viewDidLayoutSubviews() 
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataMgr.data.count
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell : CustomTableViewCell = self.tblView.dequeueReusableCellWithIdentifier("ledgerCell", forIndexPath : indexPath) as! CustomTableViewCell

        var values = dataMgr.data[indexPath.row]
        cell.newTotalLabel?.text = "\(values.newTotal)"
        cell.winLoseValueLabel?.text = "\(values.newTotal - values.currentTotal)"
        cell.dateLabel?.text = "5/17/2015"
        //cell.playersScrollView.contentSize.width = cell.playersScrollView.frame.width
        /*****Adjusting contentSize did not work here either*****/
        cell.tblView = self.tblView

        return cell
    }

}

我想出了一个有效的解决办法。我没有根据框架的宽度设置contentSize,而是根据窗口的宽度以及从scrollview框架到窗口边界两侧的距离设置contentSize。此解决方案允许将代码放置在CustomTableViewCell类的awakeFromNib()方法中

self.playersScrollView.contentSize.width = UIScreen.mainScreen().bounds.width - (self.playersScrollView.frame.minX * 4)

我唯一不明白的是为什么我必须将窗口边界和scrollview帧之间的距离乘以4,而不是2。我在scrollview的两侧都有相同的宽度,但是乘以2给出的值不正确,而乘以4给出的所有屏幕大小的值都正确。

那么
-(void)layoutSubview
方法呢,它是
UIView
类的一部分:?不幸的是,它在那里也不起作用。