开发者

IOS call a method from a another class

I have a Tab bar app with 3 view controller, the FirstViewController have an audio player with the list of song and play/pause button. Now I want for SecondviewController and ThirdViewController to add a button who will call the method - (void) playpause of the FirstViewController class.

Looks easy but I didn´t find the way to make it working, i tried that :

  - (IBAction) playpause1
 {
PlayerAppDelegate *appDelegate = (PlayerAppDelegate*)[[UIApplicatio开发者_开发问答n sharedApplication] delegate];
[appDelegate performSelector:@selector(playpause)];
NSLog(@"playpause test");   

}

But this code only control the method in app delegate, not directly on the FirstViewController class like I need.

Any tips ?


There are a number of possibilities:

  • Move the audio playing capability to a separate object, since it's a distinct task from what a view controller normally does. Then give all three view controllers a reference to that audio player and let them use it as necessary.

  • Have the object that creates the view controllers (typically the app delegate) give the second and third view controllers each a reference to the first view controller and let them send the -playpause message.

  • Use notifications. The second and third view controllers can simply post a notification that the first controller will listen for. This avoids the need to have the three view controllers know about each other.


If I understood your question correctly... You can use optional protocol and delegate to achieve this. For example, in your SecondViewController's .h file:

@protocol SecondViewControllerDelegate -(void)playpause1; @end

@property (assign) id delegate;

In your FirstViewController's .h file, include this is the interface line:

The FirstViewController shold implement the -(void)playpause1 { NSLog(@"playpause test"); }

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜