我正在尝试将tableview
作为子视图添加到我的tableViewController
,但我想在storyboard
中设置单元格。它将是一个静态的tableview
。
这是在按钮点击时调用tableview
的代码。
- (IBAction)botaoAdicionar:(id)sender {
AtividadesPraticadasTableView *tableview = [[AtividadesPraticadasTableView alloc] initWithFrame:CGRectMake(0, 170, 320, 320) style:UITableViewStylePlain];
[self.view addSubview:tableview];
}
在tableview
课程中我有这个:
@implementation AtividadesPraticadasTableView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
现在,我在故事板中有viewcontroller
tableview
,tableview
的类已更改为此文件AtividadesPraticadasTableView
。它在storyboard
中有三个静态自定义单元格,因此会打开一个空白默认tableview
。
我错过了什么?
答案 0 :(得分:2)
静态表格视图完全包含在故事板中,并需要故事板中的信息来显示其内容。
您已在故事板中定义了一个静态表视图控制器,填充它并将tableView的自定义类设置为您的自定义类,但是当您要添加表视图时,您只是实例化该类的表视图。这不会获得您添加到故事板的任何信息。
此外,静态单元信息由 UITableViewController 读取和理解,而不是 UITableView ,因此您也处于错误的级别。
您需要执行以下操作:
从原始视图控制器的storyboard
属性(如果它与静态表位于同一故事板上)或使用storyboardWithName:bundle:
获取对故事板的引用。
使用instantiateViewControllerWithIdentifier:
从该故事板中实例化表视图控制器。这将创建一个包含所有静态单元格的表视图控制器对象
addChildViewController:
tableView
添加为子视图在故事板中添加容器视图以保持此视图可能更简单,并在按下按钮时显示它,正如Mike Slutsky建议的那样 - 这将完成所有实例化和添加和子视图控制器工作对你而言,原则仍然是一样的。
此外,将表视图作为子视图添加到表视图控制器听起来非常狡猾 - 表视图控制器已经有一个表视图作为其视图,并且您无法真正添加子视图。
答案 1 :(得分:1)
您遗漏的内容是编程实例化的tableview
与您在故事板中放置的UITableView
之间的关联。您不能只在故事板中绘制UITableViews
并开始在控制器代码中实例化新UITableViews
,并期望xcode知道您想从故事板中使用哪个UITableView
。使用IBOutlet将控制器的全局变量连接到故事板中的UITableView
,然后控制器将知道您要引用的内容。如果您希望点击按钮显示UITableView
,只需在故事板中将UITableView
默认设置为隐藏,然后在按下按钮时取消隐藏。
答案 2 :(得分:-1)