删除包含String的单元格后的UITableView单元格文本

时间:2017-11-14 21:28:11

标签: ios arrays swift uitableview strikethrough

我希望在特定文本行之后删除UITableView中的所有单元格文本。

Example (after "+")

我想我已经接近了,但删除线并没有在模拟器中应用。 (构建成功)

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "Cell")

   if indexPath.row > dailyTasks.index(of: "+")! {

    let attributeString: NSMutableAttributedString =  NSMutableAttributedString(string: dailyTasks[indexPath.row])
    attributeString.addAttribute(NSAttributedStringKey.strikethroughStyle, value: 1, range: NSMakeRange(0, attributeString.length))

    cell.textLabel?.attributedText = attributeString

   } else {
     cell.textLabel?.text = dailyTasks[indexPath.row]
    }

    cell.textLabel?.font = UIFont(name: "GillSans-Light", size: 17)
    cell.indentationLevel = 1
    cell.textLabel?.addCharactersSpacing(1.2)
    cell.backgroundColor = UIColor(red:0.99, green:0.97, blue:0.91, alpha:1.0)
    cell.selectionStyle = UITableViewCellSelectionStyle.none

    return cell

}

1 个答案:

答案 0 :(得分:0)

如果您使用的是属性字符串,请不要在标签上设置字体;而是将字体设置为属性。这是一个展示如何操作的游乐场:

import UIKit
import PlaygroundSupport

let label = UILabel()
let text = "sample text"
let view = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
let attributes: [NSAttributedStringKey: Any] =
    [NSAttributedStringKey.font: UIFont(name: "GillSans-Light", size: 17)!,
     NSAttributedStringKey.foregroundColor : UIColor.white,
     NSAttributedStringKey.strikethroughStyle: 1]
label.attributedText = NSAttributedString(string: text, attributes: attributes)
view.addSubview(label)
label.sizeToFit()
PlaygroundPage.current.liveView = view