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