Hi,
I am trying to bind a DataSource to a TableView, but when trying to
get the objectValueForTableColumn, I get an error :
""""
item added
numberOfRows call
reloaded
get Object
Stacktrace:
at (wrapper managed-to-native)
Monobjc.Dynamic.Messaging.OBJC_MSGSEND [System_Void]().objc_msgSend
(intptr,intptr) <0x00004>
at (wrapper managed-to-native)
Monobjc.Dynamic.Messaging.OBJC_MSGSEND [System_Void]().objc_msgSend
(intptr,intptr) <0xffffffff>
at (wrapper runtime-invoke) Monobjc.Dynamic.Messaging.OBJC_MSGSEND
[System_Void]().runtime_invoke_void_intptr_intptr
(object,intptr,intptr,intptr) <0xffffffff>
at (wrapper managed-to-native)
System.Reflection.MonoMethod.InternalInvoke
(object,object[],System.Exception&) <0x00004>
at (wrapper managed-to-native)
System.Reflection.MonoMethod.InternalInvoke
(object,object[],System.Exception&) <0xffffffff>
at System.Reflection.MonoMethod.Invoke
(object
,System
.Reflection
.BindingFlags
,System.Reflection.Binder,object[],System.Globalization.CultureInfo)
<0x000b5>
at System.Reflection.MethodBase.Invoke (object,object[]) <0x00020>
at Monobjc.Generation.MessagingGenerator.SendMessage
(string,intptr,intptr,object[]) <0x0010b>
at Monobjc.ObjectiveCRuntime.SendMessage
(Monobjc.IManagedWrapper,string,object[]) <0x00070>
at Monobjc.Cocoa.NSApplication.Run () <0x0002b>
at Monobjc.Cocoa.NSApplication.RunApplication () <0x0004b>
at TestCocoaGui.Program.Main (string[]) <0x00034>
at (wrapper runtime-invoke)
TestCocoaGui.Program.runtime_invoke_void_string[]
(object,intptr,intptr,intptr) <0xffffffff>
Abort trap
"""
What causes this ? The object i am returning is a string...
Thx,
Mario
From: Duane Wandless [mailto:[EMAIL PROTECTED]
Sent: vrijdag 21 november 2008 16:51
To: users@lists.monobjc.net
Subject: Re: [EMAIL PROTECTED] Data binding
Not knowing what you have accomplished already I will briefly describe
what I have done. When I find time I'll post something with
pictures. My main application is a Cocoa ObjC app that controls the
GUI. When the app starts the very first thing I do is load my C# EXE,
note not a DLL. A bug/issue exists that loading a DLL does not
completely init the mono environment.
Using Monobjc I export my C# classes to the Cocoa world. This is why
the mono executable must be properly initialized first, so that when
the NIB files are loaded by Cocoa it will find my registered mono
classes.
In the NIB file I add an NSObject and set the class to be the name of
my C# class, say MonoObject. Add some class outlets to the MonoObject
in the NIB file that point to array/tree controllers within that NIB
file. The tree controller's mode should be class and the class name
most likely will be NSMutableDictionary, though it can be a class
defined in mono as well. You can add keys to these controllers to
make binding easier on the table views. Speaking of the table views,
you simply point them to the tree controller and bind as usual.
Back in your C# class you will have a NSTreeController variable that
is hooked up by monobjc to the tree controller in the NIB file.
Whenver appropriate you can, from within C#, clear the tree controller
data, add data, remove data etc. I call something like
treeController.addObject(<myobject>) where myobject is an instance of
a C# class. That class then must register the methods to expose the
keys you have setup in the tree controller.
You most likely will need to send a reload data notification to the
views that use these tree controllers. So you should also set class
outlets that point to these views so that you can send them reload
data messages. PostNotification is a nice way to send messages to
your mono class so that it can load the data as needed.
Another solution is to set your table view's/outline view's datasource
to be MonoObject. Just provide the datasource methods in your C#
class. I have not implemented this way but I think I'm leaning toward
switching.
Not a lot of detail here but hopefully it helps.
Duane
On Fri, Nov 21, 2008 at 9:44 AM, Mario De Clippeleir
<[EMAIL PROTECTED]> wrote:
Hi,
I am trying monobjc to port an existing .NET application to the Mac. I
would like to use a DLL in which an object model resides. When loading
a file, the object model is being filled. This logic is all in the
library.
Now, my question is : if I want to use binding for the Mac gui, do I
need the "wrap" the object classes from the library into Managed
object classes ? What would be the best way to handle this ?
On another note : In the latest monobjc distribution, I can't seem to
get the TwoManyControllers project working. "The document
TwoManyControllers.exe could not be opened. TwoManyControllers cannot
open files in the EXE File format."
I mean, it loads up, but you can't do anything…
Does anyone else has this problem ?
Thanks,
Mario