我正在将一个项目转移到Swift与Storyboard。旧版本是Objective-C,并没有使用Storyboard。原始版本有许多ViewControllers,它们是CoreDataFetchedResultsViewController的子类。在CoreFetchedResultsViewController类中,我有一个UITableView的属性,它在许多方法中使用。 CoreFetchedResultsController超类中的UITableView声明如下。
@interface CoreDataFetchedResultsViewController : UIViewController <NSFetchedResultsControllerDelegate, UITableViewDataSource, UITableViewDelegate>
@property (nonatomic, strong) UITableView *storyTableView;
在继承了CoreFetchedResultsViewController的ViewControllers中,我创建了一个tableView并将其设置为viewDidLoadMethod中CoreFetchedResultsViewController的storyTableView属性。
@interface FLOViewController : CoreDataFetchedResultsViewController <FLODataHandlerDelegate, UIActionSheetDelegate>
来自FLOViewController类的viewDidLoad()
- (void)viewDidLoad
{
[super viewDidLoad];
self.storyTableView = [[UITableView alloc] initWithFrame: CGRectMake(0, 44, 320.0f, 436.0f) style: UITableViewStylePlain];
self.storyTableView.backgroundColor = [UIColor clearColor];
self.storyTableView.rowHeight = 81;
self.storyTableView.separatorColor = [UIColor blackColor];
[self.view addSubview: self.storyTableView];
self.storyTableView.delegate = self;
self.storyTableView.dataSource = self;
}
将tableView连接到CoreDataFetchedResultsViewController属性后,tableView没有使应用程序崩溃。
我在使用Storyboard时出现问题。由于我将tableView放在Storyboard中的FLOViewController上,我无法将它连接到超类CoreDataFetchedResultsViewController中的storyTableView属性。
将Storyboard元素连接到超类属性的最佳方法是什么?您是否在子类中创建了一个插座,然后将该属性设置为超类属性?
class FLOViewController
{
@IBOutlet var floViewControllerTableView: UITableView!
override func viewDidLoad()
{
super.viewDidLoad()
self.storyTableView = self.floViewControllerTableView
}
}
这似乎有效,但对我来说似乎不对。似乎复制对象似乎不是最好的主意。任何帮助将不胜感激。
小心,
乔恩
答案 0 :(得分:0)
在超类中创建IBOutlet是最有效的。这样,您可以将tableView直接连接到此属性。
小心,
乔恩