UIPopoverController iOS 5.1 strange space when adding UINavigationController - ipad

I have some UIPopoverController that were working fine in 4.3/5.0 iOS iPad.
Now, with iOS 5.1 I have a strange space on top.
You can see both images, in 4.3/5.0 the tableView is just below the navigationController.
In 5.1, there's a space, like a blank row, but it's not a row, you can't select, you can scroll but the blank is there.
The problem appear when I use a UINavigationController
MassMediaViewController * massMediaViewController = [[MassMediaViewController alloc] initWithStyle:UITableViewStylePlain];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:massMediaViewController];
UIPopoverController * popoverMassMedia = [[UIPopoverController alloc] initWithContentViewController:navigationController];
[popoverMassMedia presentPopoverFromRect:textField.frame inView:self.scrollView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[... release objects ...]
Any ideas of what's the problem ?
thanks,
Related to this question

Oh man, I found the problem!
In the tableViewController's viewDidLoad I set the navigationBarStyle like this:
[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent];
When you remove this line, everything works fine. Actually it doesn't do anything at all, because the barStyle is in that special popover style anyway. But because I'm using the same tableViewController for the iPhone, I set the barStyle.
I made another simple test project and was able to reproduce this bug and solve it by removing the barStyle setting.
I'll file a bugreport ...

Related

Strange autolayout issue since ios 11

I have a UITableViewController which I present modally (full screen) on iPad.
Since ios11 (and never before) I've got a lots of strange display problem where the UITableViewController is apparently, at some point, unable to properly compute its heights, and when I click on a cell actions for another index path is triggered. The controller contains cells which is defined in a xib and the problem disappears if I replace this cell by a vanilla UITableViewCell. On the other hand, fixing the height of the cell from heightForRowAtIndexPath does not resolve the issue.
Now the strange thing is, if this TableViewController is not presented within a new NavigationController but is simply pushed from the current view controller, everything works (almost) fine.
I am presenting my controller like that:
MyTableViewController *tvc = [[MyTableViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tvc];
[self.navigationController presentViewController:navController animated:YES completion:nil];
Is there anything obviously wrong with the above or that could explain what I am getting ?

Gray navigation item buttons in EKEventEditViewController when global tint is set

I was trying to use an EKEventEditViewController in my app, which has a global tint (set here:
However, when the app is run, the EKEventEditViewController's navigation buttons are gray, as if they were disabled:
The buttons still work, I just don't want them to be gray like this.
My storyboard:
The popover to present the event edit view controller (it's presented when you click the "Add to my Calendar" button):
The code for presenting the EKEventEditViewController is as follows:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UINavigationController *nav = [self.storyboard instantiateViewControllerWithIdentifier:#"theIdentifier"];
SODPopoverViewController *controller = nav.childViewControllers[0];
controller.startDate = [NSDate dateWithTimeIntervalSinceNow:0];
self.popover = [[UIPopoverController alloc] initWithContentViewController:nav];
self.popover.delegate = self;
[self.popover presentPopoverFromRect:[tableView cellForRowAtIndexPath:indexPath].frame inView:[tableView cellForRowAtIndexPath:indexPath].superview permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
Any idea what's going on?
Miscellaneous information:
I am using iOS 7.1
I am using XCode 5
I am using storyboards
This is not the complete program, just a demo.
SOD stands for Stack Overflow Demo
Thanks in advance!
EDIT: the buttons are gray even without the global tint
I was messing around with the problem a little bit more, and noticed that it wasn't actually the global tint, but the fact that it was being presented modally. This question answered mine: the solution is setting self.window.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;

Adding UINavigationController inside splitViewController in iPad

I am using a splitViewController, My Detail View has a navigationController as a parent.
I have added it this way
My app is universal.So I have created different xibs for both iphone and ipad.
_moreOptions = [[MoreOptionsViewController alloc] initWithNibName:#"MoreOptionsViewController" bundle:nil];
_settingsView = [[SettingsViewController alloc] initWithNibName:#"SettingsViewController_iPad" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:_settingsView];
_moreOptions.settigsView = _settingsView;
self.splitViewController3 = [[UISplitViewController alloc]init];
// self.splitViewController3.title = #"More";
self.splitViewController3.delegate = _settingsView;
self.splitViewController3.viewControllers = #[_moreOptions, navController];
SettingsViewController has UITableView inside it. So the problem which i m facing is that , My Detail is not filling the full height on iPad, here is the screen shot
You can see the dark patch at bottom and this is my question of concern,
EDIT: I think I've found a fix, apply this to the UISplitViewController:
[splitVC setExtendedLayoutIncludesOpaqueBars:YES];
This property is iOS 7 only and seems to solve the problem. Look at the methods that replace -wantsFullscreenLayout: in UIViewController.h.
I'm having the same problem -- if I build on iOS 5 or 6, it works fine, the gap isn't there. Could it be an iOS 7 bug? If so, it's a particularly inconvenient one. Still searching for a workaround.
As far as I can tell from the current documentation, we're performing the correct steps:
(see "Adding a Navigation Controller to a Tab Bar Interface")
https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/CombiningViewControllers.html

pushViewController does not cause new controller to draw view

Preface: I am not using *.xib files.
I instantiate a UINavigationController in a class that effectively serves as my 'rootViewController'. This 'rootViewController' also has two UITableViewController members that are drawn on different sections of the iPad screen. One of which is set as the root view for the navigation controller. Let's call it tableViewControllerA.
The problem is, when I invoke pushViewController on a valid UINavigationController, I see no effect:
[tableViewControllerA.navigationController pushViewController:tableViewControllerX animated:YES];
I've gathered from the posts I've searched today, that this push method should in turn cause the screen to redraw the top of stack controller.view. This is not what I'm seeing.
It seemed there was a disconnect in my implementation, and it was time to reference a working example in my environment (xcode 4.0). Assuming the canned templates would provide a working basis, I created a new navigation-based applications. I simply modified didFinishLaunchingWithOptions: as follows.
UIViewController *view1 = [[UIViewController alloc] init];
UIViewController *view2 = [[UIViewController alloc] init];
view1.title = #"view1";
view2.title = #"view2";
[self.navigationController pushViewController:view1 animated:YES];
[self.navigationController pushViewController:view2 animated:YES];
self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:view1];
[view1 release];
[view2 release];
I found similar results. When I launch the simulator the screen title reads the title of whatever the self.window.rootViewController is pointing at. With the code as is, the title of the resulting top screen reads "view1". When I initWithRootViewController:view2, the resulting top screen reads "view2".
So please tell me I'm stupid cuz xyz...
Thanks.
Here are some references and suggestions:
Simple tutorial for navigation based application:
http://humblecoder.blogspot.com/2009/04/iphone-tutorial-navigation-controller.html
Here is another one to create the step by step navigation controller and adding the views:
http://www.icodeblog.com/2008/08/03/iphone-programming-tutorial-transitioning-between-views/
and here a bit advance with navigation + tab bar controller:
http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/CombiningToolbarandNavigationControllers/CombiningToolbarandNavigationControllers.html
Without seeing your code, I have 2 theories:
Your syntax and calls are wrong when you do the push. Use this as a model:
-(void)Examplemethod {
AnotherClassViewController *viewController = [[[AnotherClassViewController alloc] initWithNibName:#"AnotherClassView" bundle:nil] autorelease];
[self.navigationController pushViewController:viewController animated:YES];
}
You are never adding the navigation controller to the view hierarchy which never adds the view either. Take a look at this.

iPad - multiple UIBarButtonItem

I have UINavigationController and I`ve placed UIListView in it. Now I want to add multiple BarButtons to left side of navigation bar. How is that possible? I managed to add one button there via code but not multiple.
Edit: Buttons added via IB to NavigationBar of UINavigationController aren`t visible at all. What could cause the problem?
I`ve created UINavigationController in .h file and used this in .m and pushed another view (that TableView):
navigationController = [[UINavigationController alloc] init];
[window addSubview:[navigationController view]];
tableOfContents *tableOfContentsViewController = [[tableOfContents alloc] init];
[navigationController pushViewController:tableOfContentsViewController animated:NO];
[tableOfContentsViewController release];
Edit 2: I solved second problem. So the first question only remains. Multiple BarButtonItems ...
iOS 5.0 has apis to do this. Check the following properties of UINavigationItem Class
leftBarButtonItems
rightBarButtonItems
leftItemsSupplementBackButton
The only way you can do this is to add the UIBarButtonItem to a UIToolBar and make a UIBarButtonItem with the UIToolBar as the customView.
There are many examples on the web, check out:
http://osmorphis.blogspot.com/2009/05/multiple-buttons-on-navigation-bar.html

Resources