如何对我的 TODO 进行分类?
Posted
技术标签:
【中文标题】如何对我的 TODO 进行分类?【英文标题】:How can I categorize my TODOs? 【发布时间】:2018-05-21 12:02:47 【问题描述】:首先我有两个 ViewController,我创建了一个 tableView,我可以在其中将文本插入到单元格中。 在 SecondViewController 中我也有一个具有相同功能的 tableView,但是我如何才能使当我单击第一个 tableView 中的一个单元格时,我可以进入一个单独的 SecondTableView(数组)。
所以我到此为止,但我认为分类函数必须在 didSelectRowAt 中,当我单击行时。
FirstViewController: todos: 这是一个字符串数组(我想要这个作为类别)
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
if segue.identifier == "hhh"
//let destination = segue.destination as? UINavigationController
let vc = segue.destination as? SecondViewController
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
let vc = storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController
//label name
vc?.name = todos[indexPath.row]
self.present(vc!, animated: true, completion: nil)
tableView.deselectRow(at: indexPath, animated: true)
self.performSegue(withIdentifier: "hhh", sender: indexPath)
let indexpath = todos[indexPath.row]
print("indexpath:\(indexpath)")
print("row: \(indexPath.row)")
在 SecondViewController 我有一个 SecondArray=[String]()
这些实际上是 Todos。
在两个 ViewController 上,我都可以插入带有文本的单元格,但不知道如何将数据传回:=?
【问题讨论】:
既然你用UITableView
标记了这个,我可以放心地假设这是ios。您是否考虑过使用UISplitViewController
?
【参考方案1】:
在 cmets 中,我建议使用 UISplitViewController
,因为这适用于任何类型的主/详细类型的应用程序。 (其实就是Xcode项目类型。)
但如果您需要使用 UINavigationController
,这就是我要以这种方式在两个视图之间“切换”的方法:
FirstViewController:
@IBAction func showFrameVC()
updateMaskImage()
self.performSegue(withIdentifier: "ShowSecondView", sender: self)
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
if segue.identifier == "ShowSecondView"
if let vc = segue.destination as? FrameViewController
vc.someValue = someValue
vc.firstVC = self
基本上,将第一个视图控制器的 instance 与您需要传递的任何数据一起传递。
SecondViewController:
var someValue:String!
weak var subjectVC:FirstViewController!
override func viewWillDisappear(_ animated: Bool)
super.viewWillDisappear(animated)
if isMovingFromParentViewController
firstVC.someValue = someValue
在这里,您让导航控制器完成它的工作,即将第二个视图控制器从堆栈中弹出,将其更改的数据传回。由于您要维护第一个视图控制器的 weak
值,因此在释放第二个控制器时释放该内存。
【讨论】:
【参考方案2】:在您的代码中,您在同一功能中以两种方式呈现您的 SecondViewController。
self.present(vc!, animated: true, completion: nil)
和
self.performSegue(withIdentifier: "hhh", sender: indexPath)
两行的意图相同,但有两种实现方式。 如果我的想法是正确的,您不必执行 segue(上面提到的第二行代码,也没有为 segue 方法做准备)。
【讨论】:
以上是关于如何对我的 TODO 进行分类?的主要内容,如果未能解决你的问题,请参考以下文章