如何将数据传递给从 UIStoryboard 实例化的 table 视图控制器?
How to pass data to table view controller being instantiated from UIStoryboard?
我有一个 ViewController 和一个包含两个 TableViewController 的 UIScrollView。
let allViewController = self.storyboard!.instantiateViewControllerWithIdentifier("ContentViewController") as! ContentViewController;
let favoritesViewController = self.storyboard!.instantiateViewControllerWithIdentifier("ContentViewController") as! ContentViewController;
在 scrollViewDidEndDecelerating 委托中的某个时刻,我想将当前页面从 UIScrollView(1 或 2)发送到我的 ContentViewController:
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
let page = Int(scrollView.contentOffset.x / scrollView.frame.size.width)
// how to send page to ContentViewController
//delegate.pageChanged(page)
}
如果我不使用 prepareForSegue,如何实际将数据发送到 UITableViewController?
我尝试的是向 ViewController 添加一个协议,但我无法在 ContentVieController 中初始化委托:
protocol PageChangedDelegate {
func pageChanged(page: Int)
}
var delegate: PageChangedDelegate!
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
let page = Int(scrollView.contentOffset.x / scrollView.frame.size.width)
delegate.pageChanged(page) // delegate is nil here
}
当您实例化一个 viewController 并且向下转换时使用 "as!" 您现在可以访问该视图控制器的变量,
假设您的内容视图控制器有变量 A、B、C,您可以这样做
let allViewController = self.storyboard!.instantiateViewControllerWithIdentifier("ContentViewController") as! ContentViewController
allViewController.A = "Setting variable A on view controller"
allViewController.B = "hi"
allViewController.C = "the view controller now has its variables assigned"
我有一个 ViewController 和一个包含两个 TableViewController 的 UIScrollView。
let allViewController = self.storyboard!.instantiateViewControllerWithIdentifier("ContentViewController") as! ContentViewController;
let favoritesViewController = self.storyboard!.instantiateViewControllerWithIdentifier("ContentViewController") as! ContentViewController;
在 scrollViewDidEndDecelerating 委托中的某个时刻,我想将当前页面从 UIScrollView(1 或 2)发送到我的 ContentViewController:
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
let page = Int(scrollView.contentOffset.x / scrollView.frame.size.width)
// how to send page to ContentViewController
//delegate.pageChanged(page)
}
如果我不使用 prepareForSegue,如何实际将数据发送到 UITableViewController?
我尝试的是向 ViewController 添加一个协议,但我无法在 ContentVieController 中初始化委托:
protocol PageChangedDelegate {
func pageChanged(page: Int)
}
var delegate: PageChangedDelegate!
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
let page = Int(scrollView.contentOffset.x / scrollView.frame.size.width)
delegate.pageChanged(page) // delegate is nil here
}
当您实例化一个 viewController 并且向下转换时使用 "as!" 您现在可以访问该视图控制器的变量,
假设您的内容视图控制器有变量 A、B、C,您可以这样做
let allViewController = self.storyboard!.instantiateViewControllerWithIdentifier("ContentViewController") as! ContentViewController
allViewController.A = "Setting variable A on view controller"
allViewController.B = "hi"
allViewController.C = "the view controller now has its variables assigned"