My app has a custom UINavigationController with a custom UINavigationBar.
It's always worked fine but since updating Xamarin Studio and XCode to fully support iOS7 it throws the following error in the simulators and on iOS 7 devices.
It happens when I do anything on the navigation controller, such as pushing a view or changing the background colour.
Any suggestions? Do I need to create my own fully working delegate for the navigation bar?
MonoTouch.Foundation.MonoTouchException: Objective-C exception thrown. Name: NSInternalInconsistencyException Reason: Unexpected bar sending delegate -barPositionForBar:! <MyApp.CustomNavigationBar: 0x7c053780; baseClass = UINavigationBar; frame = (0 0; 320 44); opaque = NO; gestureRecognizers = <NSArray: 0x7c054a20>; layer = <CALayer: 0x7c0534c0>> at at (wrapper managed-to-native) MonoTouch.ObjCRuntime.Messaging:void_objc_msgSendSuper_IntPtr_bool (intptr,intptr,intptr,bool) at MonoTouch.UIKit.UINavigationController.PushViewController (MonoTouch.UIKit.UIViewController viewController, Boolean animated) [0x00042] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UINavigationController.g.cs:183
The bit of code in my custom navigation controller, where I'm creating the custom navigation bar.
public override UINavigationBar NavigationBar { get { if (_customNavigationBar == null) { _customNavigationBar = new CustomNavigationBar (); } return (UINavigationBar) _customNavigationBar; } }
Thanks,
DAN
Posts
I've decided to ditch my custom navigation bar approach and add a custom view to the navigation controller instead.