TableView is not showing when creating it programmatically

In my main view, I want to create a tableView with some data.

For this, when you select a row in the tableView from the second view, it should be creating the tableView in the main.

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];

}

Why is this not working? If you need more details or pictures, just ask. Thanks in advance to all of you.

Upvotes: 0

Views: 107

Answers (2)

JoshR604
JoshR604

Reputation: 155

You need to move makeView method into your viewDidLoad method. This will let the life cycle process of the application take over initializing your view frame and when it is ready you can set up your views.

OpenTableView.m

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

Within your new view controller in the viewDidLoad method is when you should programmatically setup any views and add them to the main view.

ViewController.m

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

Upvotes: 1

AshCenso
AshCenso

Reputation: 11

  1. You must present view controller
  2. makeView is necessary to call the method after loading View

Upvotes: 1

Related Questions