我有UITextView
。我正在使用UITextField
方法添加一些用append()
写的文字。我试图删除UITextView
的最后一行,但我发现只有removeLast()
方法。在swift中是否有任何方法可以删除最后一行,或者我应该自己编写一个方法吗?如果我应该写一个方法,我怎么写?
正如您在图片中看到的那样,我尝试做的是填充UITextField
并将其保存到UITextView
。当我按下"清除"按钮,我希望它只删除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 = " "
}
}
答案 0 :(得分:0)
如果我正确地解释了您的问题,您正在使用append()将textField中的文本添加到textView中,并且您希望能够删除以这种方式添加的文本。 一种方法是在添加新文本之前将文本保存在textView中,然后您可以在textView中再次显示“删除最后一行”,例如:
var textPriorToAppend = textView.text
// Then append text
// If you want to revert to previous text
textView.text = textPriorToAppend
答案 1 :(得分:0)
您好,可以为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
}
}
答案 2 :(得分:0)
根据您的新信息;我建议您实际上希望能够存储一组信息(名字,姓氏和部门)并删除整个组。将信息存储为结构然后将人员存储在数组中可能更有效。然后,您可以显示数组中的人员并更轻松地操作它们。例如,在你的班级里面:
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中;更常见的是在表中)