我已將UIScrollView
添加到自定義UITableViewCell
。當UIScrollView位於自定義UITableViewCell中時,將UIScrollView的內容大小設置爲它的幀寬度
我設計了單元格,並在故事板中添加了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
}
}
那麼'UIView'類的' - (void)layoutSubviews'方法如何:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/occ/instm/UIView/layoutSubviews? – Zhang
不幸的是它並沒有在那裏工作。 – Jason247