views:

46

answers:

2

I have a UITabbar with multiple view controllers. One of them is a UITableView. The tableview is stored in a nib where the file owner is a UITableViewController.

I'd like the tableview to show a "detail view" (custom view with a UILabel and some other elements) once a table cell is selected. My approach was to add the new details view as a child view to the UITableView:

[self.view addSubView:[detailsViewController view]]

Unfortunately that doesn't create the effect I want. As a subview of the UITableView, I can scroll beyond the added details view and see the underlying table entries. UINavigationBar is an option, but since there's no deeper hierarchy, I'd prefer a simple custom view with a close button. Any suggestions?

+1  A: 

Replace your UITableViewController with a UIViewController. Then add a UITableView to your view controller. Set the delegate and datasource of your table view to your view controller. Now you can add a subview in a non-scrolling view-controller, still having your tableview :).

Edit: Or, you can stop the tableview from scrolling when the popupview appears.

[(UIScrollView *)self.view setScrollEnabled:NO];
CGRect rect = self.popupview.frame;
rect.origin.y = [(UIScrollView *)self.view contentOffset].y;
self.popupview.frame = rect;
Tim van Elsloo
A: 

If you simply want to create a popup (Modal View)] when the user clicks a specific Cell, do the following.

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

// If the view you want to present modally is called DetailViewController, do the following.

DetailViewController *dvCon = [[dvCon alloc] initWithNibName:@"DetailViewController" bundle:nil];

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:dvCont];
[self presentModalViewController:navigationController animated:YES];

[navigationController release];
[dvCont release];   


}

Good luck!

the0rkus