Ios Swift:在TableView中获取TextView的文本(可能有两种方法)
我有一个包含可编辑文本视图的TableView,我想在用户尝试移动到下一页时检查它们是否包含文本。但是,我不确定如何从TableView内部引用它们。有什么想法吗 以下是我的设置:Ios Swift:在TableView中获取TextView的文本(可能有两种方法),ios,arrays,swift,uitableview,uitextview,Ios,Arrays,Swift,Uitableview,Uitextview,我有一个包含可编辑文本视图的TableView,我想在用户尝试移动到下一页时检查它们是否包含文本。但是,我不确定如何从TableView内部引用它们。有什么想法吗 以下是我的设置: func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifie
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ActionCell", for: indexPath) as! StepCell
// Cell Formatting
cell.label.delegate = self
cell.delegate = self
return cell
}
然后是textview委托的扩展名:
extension Step3: UITextViewDelegate {
func textViewDidChange(_ textView: UITextView) {
let cell = textView.superview?.superview as? StepCell
let indexPath = tableview.indexPath(for: cell!)
goals[goals.count - 1].steps![indexPath!.row].title = textView.text
resizeTableViewCell()
}
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if text == "\n" || text == "\t" {
textView.resignFirstResponder()
return false
}
return true
}
}
在我的viewcontroller中有一个按钮,如果所有字段都有文本,该按钮将前进到下一页
每当目标对象被创建时,每个步骤都会添加空文本到目标对象中,因此我考虑在数组中检查该对象是否有文本,但这是另一个数组中的一个数组,我无法让它工作。我尝试了下面的方法,但我得到一个错误,说类型“目标”不符合协议“序列”
@IBAction func nextTU(_ sender: Any) {
for steps in goals[0] {
print(steps.steps)
}
如果这很重要,下面是添加步骤的代码:
@IBAction func addTU(_ sender: Any) {
goals[goals.count - 1].steps?.append(Step(title: ""))
}
目标的结构如下所示:
struct Goal: Codable, Equatable {
var title: String
var description: String?
var duration: String
var steps: [Step]?
var completedSteps: [Step]?
var completed: Bool
var dateCreated: Date
func returnYear(date: Date) -> Int {
let calendar = Calendar.current
return calendar.component(.year, from: date)
}
}
步骤一是:
struct Step: Codable, Equatable {
var title: String
}
总而言之,我需要检查TableView中所有TextView的文本,或者遍历数组中的数组
有什么想法吗
谢谢
goals[0]
是类型为Goal
的对象,您不能对其进行迭代,您需要
@IBAction func nextTU(_ sender: Any) {
for step in goals.last!.steps {
if step.text == "" {
// alert user
}
}
}
或
goals.last?.steps!.forEach {
if $0.title == "" {
print("I'm empty!")
}
}
上面您应该使用
goals.last!。步骤
如图所示goals[goals.count-1]
您将所有值设置为数组中的最后一项是否有多个分区或1在tableview中只有一个分区,但用户可以添加任意多的行。谢谢,但返回的错误是:键入“[Step]“?”不符合协议“序列”,仅向步骤中添加序列不足以使其符合协议“序列”。你知道它为什么这么说,或者如何解决吗?我已经在原来的问题中添加了步骤和目标。嘿@Sh_Khan,我成功地让它工作了。事实证明,如果我使用forEach而不是for-in循环,它就会工作。如果你想更新你的答案,我会接受的。目标。最后?步骤!。forEach{step-in if-step.title==“打印(“我是空的!”)}