使用Storyboard连接到超类属性

时间:2015-06-11 05:11:15

标签: properties storyboard interface-builder superclass

我正在将一个项目转移到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  
     }  
} 

这似乎有效,但对我来说似乎不对。似乎复制对象似乎不是最好的主意。任何帮助将不胜感激。

小心,

乔恩

1 个答案:

答案 0 :(得分:0)

在超类中创建IBOutlet是最有效的。这样,您可以将tableView直接连接到此属性。

小心,

乔恩