如何在 swift 中长按 UITableViewCell 调用另一个控制器?
How to call another controller on long press of UITableViewCell in swift?
我正在使用下面的代码来显示 MyEditViewController
但 MyEditViewController
中的所有字段插座都是 nil 因为这条线 let editController = MyEditViewController()
.我在这里创建新实例。所以网点现在是 nil。有没有其他方法可以调用编辑控制器而不创建它的实例?
@IBAction func editMethod(sender: UILongPressGestureRecognizer) {
if sender.state == UIGestureRecognizerState.Began {
let cell = sender.view as! MyTableViewCell
let editController = MyEditViewController()
editController.sample= samples[cell.tag]
presentViewController(editController, animated: true, completion: nil)
}
}
您不应启动 Class,而应将其作为故事板中的 ViewController 启动。因此,在您的情况下,为您的控制器设置一个 "Storyboard-ID"。
然后使用:
let editController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("StoryboardID") as! MyEditViewController
所以所有的网点都应该工作正常。
要用您的网点实例化一个新控制器,您可以使用 xib
let editController = MyEditViewController(nibName: "MyEditViewController", bundle: nil)
或者您可以将 StoryboardId 归因于您的控制器并与 instantiateViewControllerWithIdentifier
一起使用
let editController = storyboard?.instantiateViewControllerWithIdentifier("MyEditViewControllerStoryboardId") as! MyEditViewController
或者作为对您案例的建议,您可以使用不同的方法使用故事板转场。 Read more about it here
performSegueWithIdentifier("PresentMyEditController", sender: self)
我正在使用下面的代码来显示 MyEditViewController
但 MyEditViewController
中的所有字段插座都是 nil 因为这条线 let editController = MyEditViewController()
.我在这里创建新实例。所以网点现在是 nil。有没有其他方法可以调用编辑控制器而不创建它的实例?
@IBAction func editMethod(sender: UILongPressGestureRecognizer) {
if sender.state == UIGestureRecognizerState.Began {
let cell = sender.view as! MyTableViewCell
let editController = MyEditViewController()
editController.sample= samples[cell.tag]
presentViewController(editController, animated: true, completion: nil)
}
}
您不应启动 Class,而应将其作为故事板中的 ViewController 启动。因此,在您的情况下,为您的控制器设置一个 "Storyboard-ID"。
然后使用:
let editController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("StoryboardID") as! MyEditViewController
所以所有的网点都应该工作正常。
要用您的网点实例化一个新控制器,您可以使用 xib
let editController = MyEditViewController(nibName: "MyEditViewController", bundle: nil)
或者您可以将 StoryboardId 归因于您的控制器并与 instantiateViewControllerWithIdentifier
一起使用let editController = storyboard?.instantiateViewControllerWithIdentifier("MyEditViewControllerStoryboardId") as! MyEditViewController
或者作为对您案例的建议,您可以使用不同的方法使用故事板转场。 Read more about it here
performSegueWithIdentifier("PresentMyEditController", sender: self)