Ich habe eine Viewbar in einem ViewController erstellt und ich möchte dynamisch die Größe jeder Zelle mit einer Unteransicht festlegen. Ich versuche, eine Menge Technik, die nur eine dieser Funktion verwendet:Fixe size Unteransicht in UiTableview Swift 2
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 150.0
}
aber der Wert ist so fixe eine Bildlaufleiste in meinem Tableview Zelle erscheinen, und ich will nicht, ich will alle sehen die Subviews ohne Bildlaufleiste, hier ist mein Code für die Viewcontroller die Tableview enthält:
import UIKit
class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 3;
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1;
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:CustomCell? = tableView.dequeueReusableCellWithIdentifier("Cell") as? CustomCell
if(cell == nil)
{
cell = CustomCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
}
cell?.dataArr = ["Test 1","Test 2","Test 3","Test 4","Test 5"]
return cell!
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 150.0
}
}
und hier ist die individuelle Zelle:
import UIKit
class CustomCell: UITableViewCell,UITableViewDataSource,UITableViewDelegate {
var dataArr:[String] = []
var subMenuTable:UITableView?
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style , reuseIdentifier: reuseIdentifier)
setUpTable()
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
setUpTable()
}
func setUpTable()
{
subMenuTable = UITableView()
subMenuTable?.delegate = self
subMenuTable?.dataSource = self
self.addSubview(subMenuTable!)
}
override func layoutSubviews() {
super.layoutSubviews()
subMenuTable?.frame = CGRectMake(0.2, 0.3, self.bounds.size.width-5, self.bounds.size.height-5)
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataArr.count
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("cellID")
if(cell == nil){
cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cellID")
}
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 160.0
cell?.textLabel?.text = dataArr[indexPath.row]
return cell!
}
}
Wie kann ich das reparieren?
Ich denke, es ist der richtige Weg ist, aber es an dieser Linie abstürzen, ohne Fehlermeldung ... – fandro
@fandro Sie versucht haben, sie mögen dieses 'tableView.cellForRowAtIndexPath (indexPath) ?. Rahmen .size.height'? – 4oby
Ja das ist die Korrektur von Xcode – fandro