Hi Rolf,

We are using the mentioned doc, as well as the bindings reference guide to
create our bindings. Perhaps the original context of this thread was lost,
so I'm posting the first message again:
---------------------
I bind a protocol that specifies the type for a delegate: 
        [BaseType (typeof (NSObject))] 
        [Model] 
        interface SCTableViewModelDataSource 
        { 
                ........ 

                [Export
("tableViewModel:newItemForArrayOfItemsSectionAtIndex:")] 
                 NSObject
NewItemForArrayOfItemsSectionAtIndex(SCTableViewModel tableViewModel, int
index); 
                  
        } // SCTableViewModelDataSource 

And a class that uses the delegate, as well a few subclasses: 

        [BaseType (typeof (NSObject))] 
        interface SCTableViewModel 
        { 
                ........ 

                ///** The object that acts as the data source of
'SCTableViewModel'. The object must adopt the SCTableViewModelDataSource
protocol. */ 
                //@property (nonatomic, assign) id dataSource; 
                [Export ("dataSource", ArgumentSemantic.Assign),
NullAllowed] 
                NSObject WeakDataSource { get; set; } 

                [Wrap ("WeakDataSource"), NullAllowed] 
                 SCTableViewModelDataSource DataSource { get; set; } 
        } // SCTableViewModel 

        [BaseType (typeof (SCTableViewModel)), DisableDefaultCtor] 
        interface SCArrayOfItemsModel 
        { 
                ........ 
        } // SCArrayOfItemsModel 

        [BaseType (typeof (SCArrayOfItemsModel))] 
        interface SCArrayOfObjectsModel 
        { 
                ........ 
        } // SCArrayOfObjectsModel 

In my view controller, I create an inner class that inherit the protocol: 
                class TableViewModelDataSource : SCTableViewModelDataSource 
                { 
                        RootViewController controller; 

                        public TableViewModelDataSource (RootViewController
controller) 
                        { 
                                this.controller = controller; 
                        } 
                        
                        public override NSObject
NewItemForArrayOfItemsSectionAtIndex (SCTableViewModel tableViewModel, int
index) 
                        { 
                                Console.WriteLine("Creating new thing"); 
                                return null; 
                        } 
                } // TableViewModelDataSource 


And I assign a new TableViewModelDataSource object as the DataSource of a
SCArrayOfObjectsModel obj: 

                        mTableModel = new SCArrayOfObjectsModel(); 
                        mTableModel.Init(); 
                        mTableModel.DataSource = new
TableViewModelDataSource(this); // this is the vew controller 

I have tested this same code in an Obj-C iOS project, and the delegate
method tableViewModel:newItemForArrayOfItemsSectionAtIndex: gets called when
expected. However, I wasn't able to get the C# equivalent invoked. There is
no console output, and a breakpoint in the method does not stop execution.
Am I somehow not binding the protocol correctly, or am I missing a step in
binding?
---------------------


Rolf Bjarne Kvinge wrote
> 
> Hi,
> 
> Have you read this:
> http://docs.xamarin.com/ios/advanced_topics/binding_objective-c_types? If
> you just want to provide bindings, having a tool do most of the work is
> usually best :)
> 
> Rolf
> 
> On Tue, Nov 29, 2011 at 12:59 AM, Xy <Xy@> wrote:
> 
>> Hi Rolf,
>>
>> Thanks for the advice, but we're actually not trying to implement this
>> Obj-C
>> class in C#, just provide C# bindings to its APIs. I looked at more code
>> examples, and looks it may not necessary to declare these protocols in C#
>> bindings. So we're going back to the original question: what might cause
>> a
>> delegate method that gets called in an iOS program to not get called in a
>> MT
>> program with same/similar code logic?
>>
>> --
>> View this message in context:
>> http://monotouch.2284126.n4.nabble.com/Objective-C-protocol-binding-method-not-invoked-tp4105828p4117403.html
>> Sent from the MonoTouch mailing list archive at Nabble.com.
>> _______________________________________________
>> MonoTouch mailing list
>> [email protected]
>> http://lists.ximian.com/mailman/listinfo/monotouch
>>
> 
> _______________________________________________
> MonoTouch mailing list
> [email protected]
> http://lists.ximian.com/mailman/listinfo/monotouch
> 


--
View this message in context: 
http://monotouch.2284126.n4.nabble.com/Objective-C-protocol-binding-method-not-invoked-tp4105828p4121794.html
Sent from the MonoTouch mailing list archive at Nabble.com.
_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch

Reply via email to