另一个控制器的访问方法

时间:2015-10-09 05:51:22

标签: ios objective-c

我在名为" Remotecontroller"的控制器中有一个按钮动作功能。这是方法:

-(IBAction)startDiscover:(id)sender{.....}

我有另一个名为" iptvViewcontroller"的控制器。我需要在这个" iptvViewcontroller"中调用上面的方法。当按下按钮时。这是我的按钮点击功能:

btnRefresh3 = [UIButton buttonWithType:UIButtonTypeCustom];
            btnRefresh3.frame = CGRectMake(0, 0, 25, 20);
            [btnRefresh3 addTarget:self action:@selector(startDiscover:) 
            [arrLeftBarItems addObject:barButtonItem3];

请有人帮助我让它发挥作用。

3 个答案:

答案 0 :(得分:1)

通过创建和使用自定义委托,您可以实现该功能。

Objective-C委托是一个已分配给委托属性另一个对象的对象。

有关详细信息以及如何创建和使用自定义委托,请参阅以下链接。

1。How do I create delegates in Objective-C?

2。How to use custom delegates in Objective-C

答案 1 :(得分:0)

Remotecontroller.m中,在viewDidLoad

中设置NotificationCenter
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(startDiscover) name:@"discover" object:nil];

在Remotecontroller.m

-(void)startDiscover
{
    /////Your Code
}

在iptvViewcontroller.m

[btnRefresh3 addTarget:self action:@selector(startDiscoverFromRemoteController);


-(void)startDiscoverFromRemoteController
{
    [[NSNotificationCenter defaultCenter]postNotificationName:@"discover" object:nil];
}

答案 2 :(得分:0)

要将一个方法调用到另一个类,您必须在Remotecontroller.h文件中编写方法

#import "Remotecontroller.h"

然后你的remotecontroller类导入.h文件中的iptvViewcontroller类,就像这样

viewdidload()

现在使用该方法你必须在iptvViewcontroller.h文件Remotecontroller *remote; 方法中的iptvViewcontroller类中创建和分配remotecontroller类的init对象

remote = [Remotecontroller alloc]init];

在iptvViewcontroller.m文件中

[remote startDiscover:parameter];

现在您可以在整个班级中使用您的方法

public class LocalService extends Service {
// Binder given to clients
private final IBinder mBinder = new LocalBinder();
// Random number generator
private final Random mGenerator = new Random();

/**
 * Class used for the client Binder.  Because we know this service always
 * runs in the same process as its clients, we don't need to deal with IPC.
 */
public class LocalBinder extends Binder {
    LocalService getService() {
        // Return this instance of LocalService so clients can call public methods
        return LocalService.this;
    }
}

@Override
public IBinder onBind(Intent intent) {
    return mBinder;
}

/** method for clients */
public int getRandomNumber() {
  return mGenerator.nextInt(100);
}