Hi, sorry, I don't understand at all why this is happening. If the UIPopoverController is working without subclassing, it should also work with subclassing - after all, the base c'tor is getting called!? I'm totally puzzled. I can subclass any UIViewController in MonoTouch without issue, why not that one? Why it that popover NULL?
René 2012/8/27 Alex Soto <[email protected]> > > > Ok, if you subclass you need to implement all methods and properties > needed, and how to know whats needed ?? You need too look at original ObjC > code in this case (thank God it is very well documented) you need to see > PSPDFViewController.h, you can find it inside PSPDFKitExample xcode > project > > /// Saves the popoverController if currently displayed. > @property(nonatomic, strong) UIPopoverController *popoverController; > > Unfortunately it doesn't mention that popoverController can be nil or > null in c# world so it must be implemented > > The error its showing you in this case ,this is the key part of the error > > System.ArgumentNullException: Argument cannot be null. > Parameter name: value > at > AlexTouch.PSPDFKit.PSPDFViewController.set_PopoverController(MonoTouch.UIKit.UIPopoverController > value) [0x00000] in <filename > unknown>:0 > > > There is a property PopoverController that cannot be null, you should be > fine doing > > var oController = new SubclassedController(oDoc) > { > ModalPresentationStyle = > MonoTouch.UIKit.UIModalPresentationStyle.FullScreen, > ModalTransitionStyle = > MonoTouch.UIKit.UIModalTransitionStyle.CoverVertical, > > PopoverController = new PopoverController(); > > } ; > > > I hope this helps, and also I hope I have explained myself hehe. > > Alex > > > > > El 27/08/2012, a las 07:31, René Ruppert <[email protected]> > escribió: > > Hi, > > If I use this code, everything is fine. I just call > PdfViewerController2.ShowModally(). In there, you see a part that is > commented out. If I use that subclass instead of PSPDFViewController > directly, it fails and I get the exception below. > Can somebody please explain what is going on? The PSPDFViewController is > coming from a bound library. > > public class SubclassedController : PSPDFViewController > { > private SubclassedController (PSPDFDocument oDoc) : base(oDoc) > { > } > > public static void ShowModally(string sFilename) > { > PSPDFDocument oDoc = new PSPDFDocument(NSUrl.FromFilename(sFilename)); > > // This is working. > var oController = new PSPDFViewController(oDoc) > > { > ModalPresentationStyle = > MonoTouch.UIKit.UIModalPresentationStyle.FullScreen, > ModalTransitionStyle = MonoTouch.UIKit.UIModalTransitionStyle.CoverVertical > } ; > > > // This isn't! > /*var oController = new SubclassedController(oDoc) > { > ModalPresentationStyle = > MonoTouch.UIKit.UIModalPresentationStyle.FullScreen, > ModalTransitionStyle = MonoTouch.UIKit.UIModalTransitionStyle.CoverVertical > } ;*/ > AppDelegateBase.BaseAppDelegate.MainController.PresentViewController(oController, > true, delegate {} ); > } > } > > {System.ArgumentNullException: Argument cannot be null. > Parameter name: value > at AlexTouch.PSPDFKit.PSPDFViewController.set_PopoverController > (MonoTouch.UIKit.UIPopoverController value) [0x00000] in <filename > unknown>:0 > at (wrapper managed-to-native) > MonoTouch.ObjCRuntime.Messaging:void_objc_msgSendSuper (intptr,intptr) > at AlexTouch.PSPDFKit.PSPDFViewController.ReloadData () [0x00000] in > <filename unknown>:0 > at (wrapper managed-to-native) > MonoTouch.ObjCRuntime.Messaging:void_objc_msgSendSuper_IntPtr_bool_IntPtr > (intptr,intptr,intptr,bool,intptr) > at MonoTouch.UIKit.UIViewController.PresentViewController > (MonoTouch.UIKit.UIViewController viewControllerToPresent, Boolean > animated, MonoTouch.Foundation.NSAction completionHandler) [0x0006a] in > /Developer/MonoTouch/Source/monotouch/src/UIKit/UIViewController.g.cs:482 > at BrainloopMobile.PdfViewer.PdfViewerController2.ShowModally > (System.String sFilename) [0x00023] in > /Users/rene/Documents/Develop/Projects/BrainloopMobile/220/BrainloopMobile/BrainloopMobile/Controllers/PdfViewer/PdfViewerController2.cs:22 > at BrainloopMobile.ProgressPreviewItem.PreviewPDF () [0x00000] in > /Users/rene/Documents/Develop/Projects/BrainloopMobile/220/BrainloopMobile/BrainloopMobile/Progress/ProgressPreviewItem.cs:446 > at BrainloopMobile.ProgressPreviewItem.ProgressEnded () [0x001d0] in > /Users/rene/Documents/Develop/Projects/BrainloopMobile/220/BrainloopMobile/BrainloopMobile/Progress/ProgressPreviewItem.cs:428 > at BrainloopMobile.Progress.ProgressDelegate.BaseProgressEnded > (PROGRESS_STATUS eStatus) [0x00007] in > /Users/rene/Documents/Develop/Projects/BrainloopMobile/220/BrainloopMobile/BrainloopMobile/Progress/Base/ProgressDelegate.cs:55 > at > BrainloopMobile.Progress.ModalProgressController+<EndProgress>c__AnonStorey3A.<>m__B3 > () [0x0004c] in > /Users/rene/Documents/Develop/Projects/BrainloopMobile/220/BrainloopMobile/BrainloopMobile/Progress/Base/ModalProgressController.cs:422 > at MonoTouch.UIKit.UIView+<Animate>c__AnonStorey12.<>m__14 (Boolean x) > [0x0000b] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIView.cs:110 > at MonoTouch.UIKit.UIView.TrampolineUICompletionHandler (IntPtr block, > Boolean finished) [0x00053] in > /Developer/MonoTouch/Source/monotouch/src/UIKit/UIView.g.cs:1604 > at (wrapper native-to-managed) > MonoTouch.UIKit.UIView:TrampolineUICompletionHandler (intptr,int) > at (wrapper managed-to-native) > MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr) > at MonoTouch.UIKit.UIApplication.Main (System.String[] args, > System.String principalClassName, System.String delegateClassName) > [0x00042] in > /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:29 > at BrainloopMobile.Application.Main (System.String[] args) [0x00000] in > /Users/rene/Documents/Develop/Projects/BrainloopMobile/220/BrainloopMobile/BrainloopMobile/Main.cs:15 > } > > René > > > >
_______________________________________________ MonoTouch mailing list [email protected] http://lists.ximian.com/mailman/listinfo/monotouch
