2016-01-25 88 views
0

我正在嘗試創建第一個viewcontroller按鈕,單擊以在沒有任何導航的情況下調用第二個viewcntroller方法。我的意思是需要保持第一個視圖控制器,但需要cal方法只在第二個viewcontroller和打印那裏一些NSLog如何創建第一個ViewController按鈕點擊調用第二個ViewController方法使用Objective C?

+2

你需要解釋一下你的問題更多細節,也發佈你有任何代碼。聽起來,你的應用程序的設計/結構有一些問題。調用未使用的viewController的功能很奇怪。您最有可能想要第三類具有此功能在兩個viewControllers之間共享 –

回答

1

如果我理解你的問題的權利,你可以做到以下幾點:

在你firstviewcontroller:

#import "secondviewcontroller.h" - (Or the name of the viewcontroller) 

在(IBAction爲)方法執行以下操作:

Secondviewcontroller *sec = [Secondviewcontroller alloc]init] 
[sec theMethod]; 

然後將會被調用。

我可以問,你怎麼想從一個非活動的viewcontroller調用一個動作?

+0

第二視圖控制器沒有可見的@interface聲明選擇器'theMethod'@Jakob Mikkelsen –

+0

它的工作,但進入後方法調用另一個方法不!@Jakob Mikkelsen – Helpme

+0

Of當然它必須在方法內,請標記爲正確。 – JMIT

2

只要試試這個:

第二個視圖控制器:

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doClickIt:) name:@"notificationName" object:nil]; 
} 

-(void)doClickIt:(NSNotification*)notification { 
} 

第一個視圖控制器:

在按鈕單擊IBAction爲方法叫:

-(IBAction) someMethod3:(id) sender{ 
[[NSNotificationCenter defaultCenter] postNotificationName:@"notificationName" object:obj]; 
} 

就是這樣。

希望它能幫助你。

+0

這實際上不起作用,因爲一旦導航開始,就會調用viewDidLoad。此外,使用通知似乎真的很重要只是調用視圖控制器上的方法 – shabbirv

+0

@shabbirv確定比你可以添加觀察員在委託&調用方法&從委託你可以調用任何視圖控制器的方法 – Mayur

1

嘗試以下:

ViewControllerA.h聲明的方法。

ViewControllerA.m定義一個方法。 象下面這樣:

-(NSMutableArray*) MethodOfA; 

ViewControllerB.h

#import "ViewControllerA.h" 
    ....... 
@property (nonatomic, strong) ViewControllerA * viewControllerA; 
@property (nonatomic, strong) NSMutableArray * mutableArray; 

ViewControllerB.m

在您的按鈕操作

添加以下代碼:

self.mutableArray =[self.viewControllerA MethodOfA]; 
相關問題