Bre*_*od. -1 uitableview uitextview ios swift
我试图从TextView中获取一个字符串,并为TextView.text中的每个字符添加一个新行.
因此,如果TextView text ="hi there",我希望Table View看起来像这样:
H
一世
(空间)
Ť
H
Ë
[R
Ë
谢谢!
当用户输入新文本时,将您的字符串转换为字符数组:
let chars = Array(string)
Run Code Online (Sandbox Code Playgroud)
使用caracters数组作为表视图的数据源.reloadData()
更改字符数组后调用表视图.
您的数据源方法可能如下所示:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return chars.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = String(chars[indexPath.row])
return cell
}
Run Code Online (Sandbox Code Playgroud)
下面是UITableViewController的完全实现的子类.
要使用它:
将类作为Swift文件添加到项目中.
将UITableViewController场景添加到故事板
选择"Identity Inspector"并将类更改为
CharacterTableViewController
将容器视图拖到要包含表视图的视图控制器上.(我将其称为"父"视图控制器)
从容器视图控制拖动到您的
CharacterTableViewController
.在弹出的菜单中,选择"embed"以创建嵌入segue.
将prepare(for:sender:)
(prepareForSegue)方法添加到父视图控制器,尝试将segue.destination转换为CharacterTableViewController
使用a 键入
if let
,如果成功,则将其保存CharacterTableViewController
到实例变量.(我们称之为characterVC
.)
将文本视图添加到父视图控制器.控制拖动到父视图控制器以添加IBOutlet
到文本视图.打电话给插座theTextView
.
向父视图控制器添加一个按钮.按住Ctrl键并从按钮拖动到父视图控制器中以创建IBAction.在按钮操作中,从中获取文本theTextView
并将其传递给characterVC
(characterVC.contentString = theTextView.text
)
import UIKit
class CharacterTableViewController: UITableViewController {
public var contentString: String? {
didSet {
if let string = contentString {
characters = Array(string)
} else {
characters = nil
}
}
}
var characters: [Character]? {
didSet {
tableView.reloadData()
}
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return characters?.count ?? 0
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = String(characters?[indexPath.row] ?? Character(""))
return cell
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个在演示项目中使用上面的表视图类的项目.您可以通过以下链接下载它:https://github.com/DuncanMC/CharacterTableView.git