2015-10-09 38 views
1

我在名爲「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]; 

請有人幫助我使它工作。

+0

您可以輕鬆地做到這一點,如果你能找到RemoteController'的'參考,如果它存在於內存中,並分配,而不是'在addTarget'自我。 – iphonic

回答

0

Remotecontroller.m,在viewDidLoad設置通知中心是這樣的:

[[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]; 
} 
+0

這是一個正確的方法。另一種可以實現這一點的方法是創建一個自定義協議委託。 –

0

要調用一個方法到另一個你必須在Remotecontroll中編寫你的方法er.h文件

-(IBAction)startDiscover:(id)sender; 

那麼你remotecontroller類進口在iptvViewcontroller類.h文件中這樣

#import "Remotecontroller.h" 

用到現在,你必須創建和iptvViewcontroller remotecontroller類的頁頭初始化對象方法在類文件iptvViewcontroller.h方法viewdidload()

Remotecontroller *remote; 

在iptvViewcontroller.m文件

remote = [Remotecontroller alloc]init]; 

現在你可以使用你的方法在整個類

[remote startDiscover:parameter]; 
相關問題