سؤال

I am using x-codes Master-detail template. I have a button in the detailView that has its action also in the detailViewController. Within this action method i need to call a method that is in the masterViewController. How can I do this ?

هل كانت مفيدة؟

المحلول

you need to get the reference of the masterViewController. use the delegate pattern.

Init your detailViewController with this type of function :

-(id)initWithDelegate:(id)deleg;

with protocol :

 -(id)initWithDelegate:(id<myProtocol>)deleg;

and had in your .h of detailViewController

id delegate;

with protocol :

id<myProtocol> delegate;

then in the .m of detail :

-(id)initWithDelegate:(id)deleg
{
    self = [super init];
    if(self)
    {
       delegate = deleg
    }
    return self;
}

then in your function

   -(IBAction)actionOfmyButton
    {
        if(delegate != nil && [delegate respondToSelector:@selector(functionFoo:)])
        {
           [delegate functionFoo:myArgumentsIfnecessary];
        }
    }

Good luck ^^ !

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top