如何删除 swift 中 textView 的最后一行文本?

How can I remove the last line of text of textView in swift?

我有一个UITextView。我正在使用 append() 方法添加一些在我的 UITextField 中编写的文本。我试图删除我的 UITextView 的最后一行,但我只找到了 removeLast() 方法。 swift 中是否有任何方法可以只删除最后一行,或者我应该自己为它编写一个方法吗?如果我应该写一个方法,我应该怎么写?

正如您在图片中看到的,我要做的是填充 UITextField 并将它们保存到 UITextView。当我按下 "clear" 按钮时,我希望它只删除 UITextView 的最后一行(在这张图片中是 Jane Doe UNKNOWN)。

class ViewController: UIViewController {
    @IBOutlet weak var firstName: UITextField!
    @IBOutlet weak var lastName: UITextField!
    @IBOutlet weak var dpt: UITextField!
    @IBOutlet weak var textView: UITextView!

    @IBAction func save(_ sender: UIButton) {
        textView.text.append(firstName.text! + " " + lastName.text! + " " + dpt.text! + "\n")
    }

    @IBAction func clear(_ sender: UIButton) {
    }

    @IBAction func cancel(_ sender: UIButton) {
        firstName.text = " "
        lastName.text = " "
        dpt.text = " "
    }
}

如果我对您的问题的解释正确,则您正在使用 append() 将文本字段中的文本添加到 textView 中,并且您希望能够删除以这种方式添加的文本。 一种方法是在添加新文本之前将文本保存在 textView 中,您可以在 textView 中再次将其显示为 "remove the last line",例如:

var textPriorToAppend = textView.text
// Then append text
// If you want to revert to previous text
textView.text = textPriorToAppend

您好,可以为 UITextview 或 String 创建一个扩展

extension String { 
    func removeLastLine()->String {
        var comps = self.split(separator: "\n")
        comps.removeLast()
        var outputString = ""
        var br = ""
        for sub in comps {
            outputString.append(br+String(sub))
            br = "\n"
        }
        return outputString
    }
}


 extension TextView { 
    func removeLastLine(){
        var comps = self.text.split(separator: "\n")
        comps.removeLast()
        var outputString = ""
        var br = ""
        for sub in comps {
             outputString.append(br+String(sub))
            br = "\n"
        }
        self.text = outputString
    }
}

根据您的新信息;我建议您实际上希望能够存储一组信息(名字、姓氏和部门)并删除整个组。将信息存储为结构然后将人员存储在数组中可能更有效。然后就可以显示数组中的人,操作起来更方便了。例如在你的 class:

  struct Person {
    var first: String
    var last: String
    var dept: String
    }

// Declare an empty array of people
var arrayOfPeople: [Person] = []

@IBAction fun save(_ sender: UIButton) {
     let newPerson = Person(first: firstName.text, last: lastName.text, dept: dpt.text)
     arrayOfPeople.append(newPerson)
}

然后你就可以轻松地操作数组,并有一个单独的函数来显示你喜欢的数组的结果(例如,如果你真的想要的话,在 textView 中;更常见的是在 table 中)