如何显示在另一个类中实现的表视图
问题描述:
我想通过仅使用一个子类来生成自定义表视图,以在其相应的视图中显示不同的内容。当表视图充满数据时,我想将整个视图发送到特定的视图并显示它。如何显示在另一个类中实现的表视图
当我在显示视图控制器上生成表视图时没有问题。即使我可以将表视图从显示视图控制器转移到另一个视图,但是当我尝试在另一个类中生成表视图并尝试从根视图控制器调用它时,我只会得到一个初始化但空的表视图。
下面是代码:
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
我想,我已经做了somethi恩在表填充错误,但我找不到什么。 任何提示将不胜感激。
预先感谢您
答
你似乎没有在任何地方设置表视图的数据源和委托的属性,所以你需要有这些正确设置。
另一方面,如果您生成模型而不是UITableView本身,您试图完成的任务可能会更容易。我建议查看由免费的Sensible TableView框架提供的模型,因为这可以为您节省大量时间。
当我在getTableViewForOtherVC方法中设置委托时,程序会压碎。任何想法为什么? – user2046702 2013-03-25 00:02:10
可能因为您尚未实施'numberOfSectionsInTableView:'方法。崩溃日志说什么? – Matt 2013-03-25 00:09:28
0x10e209b:movl 8(%edx),%edi Theread 1:EXC_BAD_ACCESS(Code = 2,address0x8)。我已经添加,因为你也建议数字OFSectionsInTableView但它仍然与self.spreadSheet.DataSource = self粉碎。 – user2046702 2013-03-25 14:26:45