2016-01-25 50 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]; 
相关问题