moon6pence
moon6pence

Reputation: 712

How can I set navigationController property of subview-viewController?

I have a UIViewController, and it has another UITableViewController as subview.

Table view is not visible, but in sometime it is visible by user's action. (for example, search table view.)

so, two new controller has no relation actually, (but UIViewController has UITableViewController as member variable), but only its view has parent - subview releation.

In this situation, user click the cell item in the table view, I have to push new view controller to navigation controller.

but only parent UIViewController is in navigationController, subview UITableViewController is not.

so code

[self pushViewController:viewController animated:YES];

fails in UITableViewController.

I solved this problem by passing navigationController instance of parent UIViewController to UITableViewController as property named parentNavigationController, and I called

[self.parentNavigationController pushViewController:viewController animated:YES];

instead.

It is solution that is not so bad, but I thinks it is some confused, I want to know is there more clearing solution.

How do you programming in this situation, friends?

I think parent-sub view relation of two view controller is confused, in the first. Is it better if I manage two views in one viewController? If then, view property of UITableViewController can be not table view? (and that view has table view as subview)

Thanks for your support, in advance.

Upvotes: 1

Views: 3229

Answers (2)

EmptyStack
EmptyStack

Reputation: 51374

Actually the concept is to push view controllers to the navigation stack of navigation controller. And UIViewControllers can only present modal view controllers, they can not push view controllers. So, sending pushViewController message to self(which is a UIViewController) is wrong. You can push a view controller using [self.navigationController pushViewController:anotherViewController];

Upvotes: 2

Jhaliya - Praveen Sharma
Jhaliya - Praveen Sharma

Reputation: 31730

In UITableViewController controller use self.navigationController instead of self.

[self.navigationController pushViewController:viewController animated:YES];

Upvotes: 0

Related Questions