 <p><code>containerView</code> and <code>show button</code> are in different viewControllers. So you can't just hide it. The simple way to achieve it is when you select the cell in <code>containerView</code>, present the <code>ParentViewController</code>, and the view in <code>ContainerViewController</code> will dismiss automatically. </p> <pre><code>- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self.delegate ContainerViewBLETable:self andSelectedDone:[NSString stringWithFormat:@"%ld",indexPath.row]]; ParentViewController *vc = [[self storyboard] instantiateViewControllerWithIdentifier:@"ParentViewController"]; [self presentViewController:vc animated:YES completion:nil]; } </code></pre> <p>To show the container, you can just dismiss the <code>ParentViewController</code> that presenting. 1. </p> <pre><code>- (IBAction)btnAction:(id)sender { [self.presentingViewController dismissModalViewControllerAnimated:YES]; } </code></pre> <p>Or 2. Set up segue to dismiss viewController and use prepareForSegue for delegate to communicate with other viewController.</p> <p>Also <strong>REMOVE</strong> <code>vc.view.hidden = YES</code> in delegate you had implemented</p> <pre><code> -(void) ContainerViewBLETable:(ContainerViewBLETable *)vc andSelectedDone:(NSString *)selectedStr. </code></pre>