To avoid duplication: http://stackoverflow.com/q/12155558/220643
Sebastien On Mon, Aug 27, 2012 at 10:03 AM, René Ruppert <[email protected]> wrote: > 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 > _______________________________________________ MonoTouch mailing list [email protected] http://lists.ximian.com/mailman/listinfo/monotouch
