我正在将一个用于使用nib文件的项目转换为我正在使用Storyboard的项目。该应用程序有一个主屏幕(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编写的,正如我所提到的那样是使用Storyboard。我的问题是,当我打电话
self.feedViewController!.feedsTableView.reloadData()
编译器告诉我它是零。这是可以理解的,因为我不再有用于实例化视图的笔尖。当我使用Storyboard而不是nib文件时,如何实例化FeedVC?
尝试解决方案
这是我命名VC的地方。
以下是我在设置数据处理程序的方法中输入的代码。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("FeedViewController") as! FeedViewController
self.feedViewController = vc
这是我的故事板名称。
问题可能是feedTableView而不是feedViewController。我在FeedViewController中将feedTableView声明为一个选项。
@IBOutlet weak var feedsTableView: UITableView!
小心,
乔恩
答案 0 :(得分:1)
首先,您必须使用Interface Builder在Identity Inspector中设置 Storyboard ID :
然后,您可以在任何想要实例化let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("nameOfYouPut") as! FeedViewController
的地方调用以下代码:
Dim LastRow as Integer, LastCol as Integer, Count as Integer
LastRow = 100
LastCol = 100
Count = 1
For i = 2 to LastRow
For t = 2 to LastCol step 2
Cells(i,t).Value = Count
Count = Count + 1
Next t
Count = 1
Next i
我希望这对你有所帮助。