Ulf*_*lak 5 uitableview ios swift
我正在Swift中构建一个很大程度上依赖于Table Views的应用程序.它使用页眉和页脚,以及行删除.由于某些奇怪的原因,当我执行行删除时,页眉和页脚跟随要删除的行的滑动.下面的截图解释了我的意思.

你怎么避免这个?
我正在实现这样的删除功能:
// Deleting
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
// Handling data source updating, cell row deletion, transition...
}
}
Run Code Online (Sandbox Code Playgroud)
页眉和页脚如下:
// ## Header ##
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerCell = tableView.dequeueReusableCellWithIdentifier("shoppingHeader") as! ShoppingTableViewHeaderCell
// Clear up startup background
headerCell.textLabel?.backgroundColor = UIColor.clearColor()
// Add covering background color
headerCell.backgroundColor = UIColorFromHex(0x22b8a3, alpha: 1)
// Set store image, or store title if image is unavailable
let url = NSURL(string: dataSource[sortedStores[section]]["meta_data"]["logo"].string!)
let data = NSData(contentsOfURL: url!)
if data != nil { // Store image
let image = UIImage(data: data!)
headerCell.imageView?.image = imageResize(image: image!, cellWidth: 90, cellHeight: 30)
} else { // Store name label
headerCell.textLabel?.text = dataSource[sortedStores[section]]["meta_data"]["nameStore"].string
headerCell.textLabel?.font = UIFont(name: "HelveticaNeue-Light", size: 16)
headerCell.textLabel?.textColor = UIColor.whiteColor()
}
// Right hand side details: define strings
let address = dataSource[sortedStores[section]]["meta_data"]["street"].string
let distanceMeasure = dataSource[sortedStores[section]]["meta_data"]["distance"].int!
let numberOfOffers = dataSource[sortedStores[section]]["offers"].count
// Right hand side details: assign strings to variables
headerCell.rightLabel0.text = address
headerCell.rightLabel1.text = "\(distanceMeasure) m away"
if numberOfOffers == 1 {
headerCell.rightLabel2.text = "1 offer available"
} else {
headerCell.rightLabel2.text = "\(numberOfOffers) offers available"
}
// Right hand side details: set text color
headerCell.rightLabel0.textColor = UIColor.whiteColor()
headerCell.rightLabel1.textColor = UIColor.whiteColor()
headerCell.rightLabel2.textColor = UIColor.whiteColor()
return headerCell
}
// ## Footer ##
override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let footerCell = tableView.dequeueReusableCellWithIdentifier("shoppingFooter") as! UITableViewCell
// Set black color to show that footer moves too.
footerCell.backgroundColor = UIColor.blackColor() //clearColor()
return footerCell
}
Run Code Online (Sandbox Code Playgroud)
我认为使用可重复使用的单元格作为页眉和页脚是您的问题。尝试使用笔尖代替。为页眉和页脚单元格创建单独的 .xib 文件。并获取您的手机:
let headerCell = NSBundle.mainBundle().loadNibNamed("YourNibName", owner: self, options: nil).first as! ShoppingTableViewHeaderCell
Run Code Online (Sandbox Code Playgroud)
或者实现一个 UITableViewHeaderFooterView 的子类,为它创建一个笔尖,注册这个笔尖:
tableView .registerNib(UINib(nibName:"YourNibName", bundle: nil), forHeaderFooterViewReuseIdentifier: "TableHeader")
Run Code Online (Sandbox Code Playgroud)
并通过以下方式获取标题视图:
let header = tableView.dequeueReusableHeaderFooterViewWithIdentifier("TableHeader")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1073 次 |
| 最近记录: |