以编程方式创建时,不显示TableView

时间:2015-10-06 18:01:53

标签: ios objective-c uitableview

在我的主视图中,我想创建一个包含一些数据的tableView。

为此,当您从第二个视图中选择tableView中的一行时,应该在main中创建tableView。

enter image description here

OpenTableView.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

ViewController *vc = [[ViewController alloc] init];
[vc makeView];

}

ViewController.m

- (void)makeView
{

self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 64, 700, 704) style:UITableViewStylePlain];
self.tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.tableView.backgroundColor = [UIColor blackColor];

[self.view addSubview:self.tableView];
[self.tableView reloadData];
[self viewDidLoad];

}

为什么这不起作用? 如果您需要更多细节或图片,请询问。 在此先感谢你们所有人。

2 个答案:

答案 0 :(得分:1)

  1. 您必须提供视图控制器
  2. makeView是加载View
  3. 后调用方法所必需的

答案 1 :(得分:1)

您需要将makeView方法移动到viewDidLoad方法中。这将使应用程序的生命周期过程接管初始化视图框架,当它准备就绪时,您可以设置视图。

<强> OpenTableView.m

ViewController *vc = [[ViewController alloc] init];

在viewDidLoad方法的新视图控制器中,您应该以编程方式设置任何视图并将其添加到主视图中。

<强> ViewController.m

- (void) viewDidLoad(...){
    [super viewDidLoad:...];
    [self makeView];
}