I have a UIViewController
that contains a UITableView
.
This UIViewController
is being displayed in a UIPopoverController
.
Now, the things is that the number of items in the tableView
is not constant, and I want the size of the popover (that is - the popoverContentSize
), to adjust according to the number of items in the tableView
Naively, I was thinking that if I'll set the contentSizeForViewInPopover
in viewDidLoad
after I'm loading the tableView
with all the items - It'll do it.
It didn't.
So the make it short, my question is: How can I change the popoverContentSize
directly from the contentViewController
- after it's been presented?
Appendix:
I might be very late to answer but for new user from iOS 7 please use the following line in your UIViewController i,e contentViewController of your UIPopOverViewConotroller
-(void) viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
self.preferredContentSize=myTableView.contentSize;
}
Hope this will help for iOS 7 user.
Well, In the end i did something that I'm not sure if it's the right thing to do, but it is working.
I added a reference in my contentViewController to the popoverController:
@property (nonatomic , assign) UIPopoverController *popoverControllerContainer;
Then, I added the resizing code to viewWillAppear and viewDidAppear:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.tableView reloadData];
}
-(void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.contentSizeForViewInPopover = self.tableView.contentSize;
}
-(void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.popoverControllerContainer setPopoverContentSize:self.contentSizeForViewInPopover animated:YES];
}
So, keeping a reference to the popover is kind of hack-ish, so I'm open to hear better ideas.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With