我正在将使用nib文件的项目转换为我使用故事板的项目。这个应用程序有一个主屏幕(HomeVC),加载到导航控制器中。当应用程序启动时,它启动一个数据处理程序,从多个源中提取rss数据并将它们存储在CoreData中。在HomeVC中,我实例化了堆栈中的下一个视图(FeedVC),以便在数据处理程序完成下载提要时调用一个reloadData()方法。为了实例化FeedVC,我在HomeVC中设置数据处理程序时编写了以下代码。
// This initializes the Feed VC for use later in the VC
FeedViewController *view = [[FeedViewController alloc] initWithNibName: @"FeedViewController" bundle: nil];
self.feedViewController = view;
数据处理程序完成后,我用以下代码重新加载表视图。
[self.feedViewController.feedsTableView reloadData];
这个效果很好。
这个新项目是用Swift编写的,正如我提到的,它使用的是故事板。我的问题是当我打电话的时候
self.feedViewController!.feedsTableView.reloadData()
编译器告诉我它是零。这是可以理解的,因为我不再有一个nib来实例化视图。当我使用童话板而不是nib文件时,如何实例化FeedVC?
尝试解决方案
这是我给VC命名的地方。
下面是我输入的设置数据处理程序的方法中的代码。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("FeedViewController") as! FeedViewController
self.feedViewController = vc
这是我的故事板名。
也许问题是feedsTableView而不是feedViewController。我已经将feedsTableView声明为FeedViewController中的一个选项。
@IBOutlet weak var feedsTableView: UITableView!
保重,
琼恩
发布于 2015-05-28 11:34:27
首先,必须使用接口生成器在标识检查器中设置存储板ID:
然后,您可以在任何需要实例化FeedViewController
的地方调用以下代码:
let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("nameOfYouPut") as! FeedViewController
希望这能帮到你。
https://stackoverflow.com/questions/30515526
复制相似问题