从以编程方式创建的 table 视图创建 segue
Creating segue from programmatically created table view
我是 iOS 开发的新手,在完成一些基础教程和初级书籍后,我查看了 iOS 编程的示例。之后我发现了这个。
https://github.com/uacaps/PageMenu
我下载了示例,但遇到问题。我正在使用 PageMenuDemoTabbar (https://github.com/uacaps/PageMenu/tree/master/Demos/Demo%204/PageMenuDemoTabbar)
例子。我想在用户单击 tableviewcell 时添加 segues。但这就是问题所在。因为以编程方式创建的表格视图,我无法从情节提要中添加 segues。
我怎样才能做到这一点?
感谢您的帮助。
如果你想从 Storyboard 转到另一个视图控制器,只需将 StoryboardID 添加到这个视图控制器(就像我有 RootViewController 和 StoryboardID RootVC):
然后为要传递给视图控制器的数据创建 public 属性(即 @property (nonatomic, strong) NSDictionary *propertyYouSet
)。
然后在您的 -tableView:didSelectItemAtIndexPath:
UITableView 委托方法中添加以下代码:
YourViewController *yourViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"YourViewControllerStoryboardID"];
yourViewController.propertyYouSet = @{ 'someKey': 'someValueYouWantToPass' };
[self.navigationController pushViewController:yourViewController animated:YES];
这样你仍然可以使用故事板视图控制器而不需要 segue。
Swift版本
糟糕,刚刚注意到 swift
标签。所以这里是 Swift:
中的相同代码
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("yourViewControllerStoryboardID") as! UIViewController
vc.setYourProperty(someDictionaryHere) // I'm not so sure about this, I'm new in Swift too :)
self.presentViewController(vc, animated: true, completion: nil)
}
然后在您的视图控制器中覆盖此方法:
init(coder aDecoder: NSCoder!)
{
super.init(coder: aDecoder)
}
(因为在 Swift 中需要 -initWithCoder:
:))
我是 iOS 开发的新手,在完成一些基础教程和初级书籍后,我查看了 iOS 编程的示例。之后我发现了这个。
https://github.com/uacaps/PageMenu
我下载了示例,但遇到问题。我正在使用 PageMenuDemoTabbar (https://github.com/uacaps/PageMenu/tree/master/Demos/Demo%204/PageMenuDemoTabbar) 例子。我想在用户单击 tableviewcell 时添加 segues。但这就是问题所在。因为以编程方式创建的表格视图,我无法从情节提要中添加 segues。
我怎样才能做到这一点?
感谢您的帮助。
如果你想从 Storyboard 转到另一个视图控制器,只需将 StoryboardID 添加到这个视图控制器(就像我有 RootViewController 和 StoryboardID RootVC):
然后为要传递给视图控制器的数据创建 public 属性(即 @property (nonatomic, strong) NSDictionary *propertyYouSet
)。
然后在您的 -tableView:didSelectItemAtIndexPath:
UITableView 委托方法中添加以下代码:
YourViewController *yourViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"YourViewControllerStoryboardID"];
yourViewController.propertyYouSet = @{ 'someKey': 'someValueYouWantToPass' };
[self.navigationController pushViewController:yourViewController animated:YES];
这样你仍然可以使用故事板视图控制器而不需要 segue。
Swift版本
糟糕,刚刚注意到 swift
标签。所以这里是 Swift:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("yourViewControllerStoryboardID") as! UIViewController
vc.setYourProperty(someDictionaryHere) // I'm not so sure about this, I'm new in Swift too :)
self.presentViewController(vc, animated: true, completion: nil)
}
然后在您的视图控制器中覆盖此方法:
init(coder aDecoder: NSCoder!)
{
super.init(coder: aDecoder)
}
(因为在 Swift 中需要 -initWithCoder:
:))