尝试使用tableviews编写关于我们页面的代码。我能够为"关于我们"创建第一个表格视图。组件
var aboutUs = ["About us", "Contact us", "Privacy policy"]
必须将此项目传递给包含aboutUsDetails
的下一个表格视图 var aboutUsDetails = ["A team of docs and coders ","Contact us at editor@gmail.com","Privacy Policy will be updated soon"]
我已经像这样创建了segue函数
override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == SegueDetailsTableViewController
{
let detailViewController = segue.destination as! DetailsTableViewController
let myIndexPath = self.tableView.indexPathForSelectedRow!
let row = myIndexPath.row
detailViewController.aboutUsDetails = aboutUs[row]
}
我在这里有点困惑因为aboutUsDetails是[String];它没有传递?我该如何克服这个问题?
答案 0 :(得分:1)
如果您尝试仅传递 一个字符串,则无需将aboutUsDetails
属性声明为字符串数组,而只需将其作为单个字符串:
在DetailsTableViewController
:
将aboutUsDetails: [String]?
更改为aboutUsDetails: String?
如果您要实现以下代码段,则应按如下方式更改它们:
改变这个:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return aboutUsDetails.count
}
到此:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
并改变这一点:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// you might want to have a custom cell, you don't have to change it...
let cell = tableView.dequeueReusableCell(withIdentifier: "MyCellId")
cell?.textLabel?.text = aboutUsDetails[indexPath.row]
}
到此:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// you might want to have a custom cell, you don't have to change it...
let cell = tableView.dequeueReusableCell(withIdentifier: "MyCellId")
// this is part you should foucing on...
cell?.textLabel?.text = aboutUsDetails
}
注意:您可能需要执行可选绑定以显示aboutUsDetails
的值(不包含"可选(" ...")&# 34。)
或强>
如果你坚持将aboutUsDetails声明为一个字符串数组(我认为没有必要这样做),你需要将你的字符串作为包含一个字符串的数组传递,如下所示:
override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == SegueDetailsTableViewController
{
let detailViewController = segue.destination as! DetailsTableViewController
let myIndexPath = self.tableView.indexPathForSelectedRow!
let row = myIndexPath.row
// here is the change, you are passing your string as the first
// (and the only one) element of 'aboutUsDetails'
detailViewController.aboutUsDetails = [aboutUs[row]]
}
}
希望这会有所帮助。
答案 1 :(得分:0)
aboutUs [row]是一个字符串,aboutUsDetails似乎是一个字符串数组。您可以将aboutUsDetails更改为String,或者像这样传递数据:
{{1}}
答案 2 :(得分:0)
您只需要进行一项更改,并且非常小到低于行
detailViewController.aboutUsDetails = [aboutUs[row]]
因为aboutUs [row]是字符串而且[aboutUs [row]]是String of Array,你不能将String分配给aboutUsDetails,这是一个String数组。