【发布时间】:2018-05-19 20:27:56
【问题描述】:
大家好,我是Mac OS Developer 的初学者。在名为 Controller1 的控制器中调用方法时遇到问题。
这是我的 Controller1 代码:
Controller1.h
#import <Cocoa/Cocoa.h>
@interface Controller1 : NSViewController
- (void)LoadViewActiveCall;
@end
Controller1.m
#import "Controller1.h"
@implementation Controller1
- (void)showCallViewController:(NSViewController*)target_viewcontroller2{
NSLog(@"Run method showCallViewController");
NSLog(@"Parameter targe view controller 2 : %@",target_viewcontroller2);
if(current_controller2!=nil){
[current_controller2.view removeFromSuperview];
[current_controller2 removeFromParentViewController];
}
[self addChildViewController:target_viewcontroller2];
target_viewcontroller2.view.frame=container_Call.frame;
[container_Call addSubview:target_viewcontroller2.view];
current_controller2=target_viewcontroller2;
}
- (void)LoadViewActiveCall {
[self showCallViewController:vCall];
NSLog(@"keluar active call berhasil");
}
@end
我想在Controller2的按钮IBAction上调用LoadViewActiveCall方法
Controller2.h
#import <Cocoa/Cocoa.h>
#import "Controller1.h"
@interface Controller2 : NSViewController
- (IBAction)audioCall:(id)sender;
@end
Controller2.m
#import "Controller1.h"
#import "Controller2.h"
@implementation Controller2
- (IBAction)audioCall:(id)sender {
Controller1 *co1 = [[Controller1 alloc] init];
[co1 LoadViewActiveCall];
}
@end
我的问题是当我按下 audioCall 按钮时,但没有调用 LoadViewActiveCall 方法。
对不起,我的英语不好
【问题讨论】:
-
audioCall:方法被调用了吗?如果是这样,[[Controller1 alloc] init]返回什么?你有没有在调试器中通过audioCall:看看发生了什么? -
是的,audioCall: 被调用,[[Controller1 alloc] init] 返回一个对象(如果我错了,请纠正我)。什么都没有发生,只是空白还是我做错了?
-
您在控制器中放入了哪些视图?此外,您还有一个名为
target_viewcontroller2的第三个视图控制器。那是什么?你也从来没有在[-Controller1 showCallViewController:]中安装self。 -
我尝试将视图加载到容器视图中,在这种情况下是
container_call。target_viewcontroller2是一个参数参考vCall=[self.storyboard instantiateControllerWithIdentifier:@"activeAudioCallWindow"];.... 如果调用LoadViewActiveCall方法的按钮在同一个控制器中它是有效的,但是如果按钮在不同的控制器中,LoadViewActiveCall方法不会被调用。 如果您有困惑,请见谅
标签: objective-c xcode macos nsviewcontroller