我创建了一个UITableView
,其中的单元格包含相当多的UIView
个对象。但是当我选择一个单元格时,它在运行segue时似乎并不顺畅。第二个观察是,如果我快速双击一个单元格,它将运行segue两次(推视图两次)。
什么可能导致这种行为?我将手机用作测试环境,所有其他应用都已关闭。
override func viewDidLoad() {
super.viewDidLoad()
//PickerView
self.pickerView.delegate = self
self.pickerView.dataSource = self
self.pickerView.interitemSpacing = 60
self.pickerView.backgroundColor = UIColor(hexString: "#1C1F27")
self.pickerView.textColor = UIColor(hexString: "#D8D8D8").colorWithAlphaComponent(0.4)
self.pickerView.highlightedTextColor = UIColor.whiteColor()
self.pickerView.font = UIFont(name: "MavenProRegular", size: 12)!
self.pickerView.highlightedFont = UIFont(name: "MavenProRegular", size: 12)!
self.pickerView.pickerViewStyle = .StyleFlat
self.pickerView.maskDisabled = false
self.pickerView.reloadData()
//Tableview
self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None
self.tableView.delegate = self
self.tableView.dataSource = self
self.tableView.backgroundColor = UIColor.clearColor()
//ActivityIndicator
self.refreshControl = UIRefreshControl()
self.refreshControl.tintColor = UIColor.whiteColor().colorWithAlphaComponent(0.4)
self.refreshControl.addTarget(self, action: "refresh", forControlEvents: UIControlEvents.ValueChanged)
self.tableView.addSubview(refreshControl)
}
//TABLEVIEW METHODS
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 140
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("MatchCell", forIndexPath: indexPath) as UITableViewCell
cell.backgroundColor = UIColor.clearColor()
cell.selectionStyle = UITableViewCellSelectionStyle.Default
let backgroundSelectionView = UIView(frame: cell.bounds)
backgroundSelectionView.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.05)
cell.selectedBackgroundView = backgroundSelectionView
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.performSegueWithIdentifier("CameraController", sender: self)
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
答案 0 :(得分:-1)
let backgroundSelectionView = UIView(frame: cell.bounds)
您可以将视图放在单元格文件中。 由于tableViewCells正在被重用,因此一旦他们创建了单元格(使用视图),就不会再次生成它。
另一方面,您所做的是每次出列单元格时,初始化视图并将其指定为单元格的子视图,这意味着您正在进行额外的视图初始化工作。
因此,您可以转到cell.m文件并为您需要的视图添加属性。如果您在tableview和cell中使用storyboard,那么只需在那里进行IBOutlet。如果你正在使用xib文件,那就去那里做一个IBOutlet。
另一方面,我不知道你的相机视图控制器在做什么。也许实例化导致了性能问题。您可以在相机VC上提供更多代码。