下面的代码显示在TableView中单击的任何单元格的内容。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print(self.cell[indexPath.row])
}
我想使用打印在另一个ViewController上的标签中的结果。
如何从函数中获取字符串值,然后在另一个视图上使用它?我的想法是使用全局变量,但我需要首先获取字符串值。
答案 0 :(得分:-1)
首先,当您创建tableView
时,必须收集数组或其他数据集合中单元格的数据(此处为 string )。您可以在方法 indexPath
中使用 didSelectRowAt
变量获取所需的数据(字符串)。您可以通过多种方式将字符串传递给另一个ViewController
(让我们使用 SecondViewController
)。
这里是一个例子:
// declaration an array of your strings
var array : [String] = ["First", "Second", "Third", ...]
...
// getting a string from method:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let string = array[indexPath.row]
print(string)
// next, for example, you need to pass the string to a singleton SecondViewController with static var **main**:
SecondViewController.main?.neededString = string
}
不要忘记在异步DispatchQueue中进行更新:
DispatchQueue.main.async {
SecondViewController.main?.updateUI(withString : string)
}
答案 1 :(得分:-1)
例如,您可以对var SecondScreen
使用另一个ViewController(main
)的单例进行简单组织(以防万一,当{{1} }是通过情节提要板初始化的):
SecondScreen
您可以像这样更新SecondScreen:
class SecondScreen : UIViewController {
// 1. add this var
static var main : SecondScreen? = nil
// 2. Your some UI element
@IBOutlet weak var textButton: UIButton!
// 3. add this method
func updateUI(string : String) {
textButton.setTitle(string, for: .normal)
}
// 4. setting a var
override func viewDidLoad() {
if SecondScreen.main == nil {
SecondScreen.main = self
}
}
// ... another your and standard methods
}
我还建议您调用异步方法:
let v = SecondScreen.main
v?.updateUI(string: "yourString")
我建议您了解有关单例的更多信息...