Iphone 如何调用ViewController';显示第二视图的方法是什么?

Iphone 如何调用ViewController';显示第二视图的方法是什么?,iphone,uiview,uiviewcontroller,interrupt-handling,Iphone,Uiview,Uiviewcontroller,Interrupt Handling,// //MyGameViewController.h // #导入 #导入“SecondViewController.h” @接口MyGameViewController:UIViewController{ IBOutlet SecondViewController*SecondViewController; } -(iAction)goToSecondView @结束 // //MyGameViewController.m // #导入“MyGameViewController.h” @M

//
//MyGameViewController.h
//
#导入
#导入“SecondViewController.h”

@接口MyGameViewController:UIViewController{
IBOutlet SecondViewController*SecondViewController;
}
-(iAction)goToSecondView
@结束


//
//MyGameViewController.m
//
#导入“MyGameViewController.h”

@MyGameViewController的实现

-(iAction)goToSecondView{
[自我呈现ModalviewController:secondViewController动画:是];
}


//
//MyGameView.h
//
#导入
#导入“Sprite.h”

@接口MyGameView:UIView{…}

目前,我在MyGameView.xib上实现了一个按钮来调用secondViewController视图,它可以正常工作。但我希望在出现中断时,通过在MyGameView.m中编程来调用secondViewController,而不是按下按钮。因此,我认为有两种方法:

a) 使goToSecondView方法可用于MyGameView.m
b) 实现MyGameViewController.h和MyGameViewController.m到MyGameView.m中的所有代码

问题:
1) 当试图使a)发生时,我必须使goToSecondView方法以(void)开始,而不是以(IBAction)开始。但是如何在MyGameView.m中调用它呢?

2) 我尝试了b)并实现了MyGameView.m的所有代码。但目前的ModalViewController是ViewController的一种方法,不能在UIView中工作。那么解决方案是什么呢?

正如您所说的,您不能在UIView类中调用presentModalViewController。这似乎是一个使用代理的好机会。您可以按照以下思路做一些事情:

在MyGameView.h中

@protocol MyGameViewDelegate
- (void)showSecondView;
@end

@interface MyGameView {
}
@property (nonatomic, assign) id <MyGameViewDelegate> delegate;
...
@end
在MyGameViewController.h中:

#import "MyGameView.h"
@interface MyGameViewController : UIViewController <MyGameViewDelegate> {
...
注意,您还需要将MyGameViewController设置为MyGameView的代理。根据创建这两个对象的位置,可以在Interface Builder或代码中执行此操作

要在代码中执行此操作,例如在MyGameViewController.h viewDidLoad方法中:

myGameView.delegate = self;

谢谢你的详细回复。我是新手,有点迷路了。你上面提到的大多数关键词对我来说都是新的,比如has@protocol,#pragma mark…,等等。1)你能解释一下算法的作用吗?我必须创建另一个委托类,以便创建它的实例?所有这些看起来都不同于我一直使用的典型声明。2) MyGameViewDelegate指的是什么?我还要创建另一个.h.m文件吗?3) 那么,如何将MyGameViewController设置为MyGameView的代理?已有MyGameAppDelegate文件。协议是Objective-c的基本部分。任何一本像样的书都会告诉你。苹果的文档位于。
#pragma mark MyGameViewDelegate methods

- (void)showSecondView {
    [self goToSecondView];
}
myGameView.delegate = self;