如何删除 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 中)
我有一个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 中)