如何显示在另一个类中实现的表视图

时间:2013-03-24 23:18:53

标签: uitableview uiviewcontroller

我想在相应的视图中显示不同的内容,只使用一个子类来生成自定义表视图。当表视图填充数据时,我想将整个视图发送到特定视图并显示它。

当我在显示视图控制器上生成表视图时,没有问题。即使我可以将表视图从显示视图控制器传输到另一个视图,但是当我尝试在另一个类中生成表视图并尝试从根视图控制器调用它时,我只获得一个初始化但空表视图。

以下是代码:

tableViewGenerator.h

#import <UIKit/UIKit.h>
@interface TableViewGenerator : UIViewController <UITableViewDataSource, UITableViewDelegate>
- (UITableView *) getTableViewForOtherVC;
@property (nonatomic, strong) IBOutlet UITableView *spreadSheet;
@end

tableViewGenerator.m

...

- (UITableView *) getTableViewForOtherVC {
    if (!self.spreadSheet) {
        self.spreadSheet = [[UITableView alloc]initWithFrame:CGRectMake(0., 0., self.view.frame.size.width, self.view.frame.size.height/2.5) style:UITableViewStyleGrouped];
    }
    UITableView *tableViewToBeTransfered = self.spreadSheet;
    return tableViewToBeTransfered;
}
...
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }
    cell.textLabel.text = @"Test";
    return cell;
}

displayingVC.m

#import "DisplayingVC.h"
#import "TableViewGenerator.h"

@interface CTTOVViewController ()

@end

@implementation CTTOVViewController

- (void)viewDidLoad{
    [super viewDidLoad];
    UITableView *spreadSheet1;
    if (!spreadSheet1) {
        TableViewGenerator *tableVC = [[TableViewGenerator alloc]init];
        spreadSheet1 = [tableVC getTableViewForOtherVC];
        [self.view addSubview:spreadSheet1];
    }
}
...
@end

我想我在桌子填充上做错了但是我找不到什么。 任何提示都将受到高度赞赏。

提前谢谢

1 个答案:

答案 0 :(得分:0)

您似乎没有在任何地方设置表视图的dataSource和委托属性,因此您需要正确设置这些属性。

在另一方面,如果您生成模型而不是UITableView本身,那么您要完成的任务可能会更容易。我建议查看免费的Sensible TableView框架提供的模型,因为这些可以为您节省大量时间。