我在Unity上读到了几个答案,包括这里,只展示了如何创建一个子类并展示了我的第一个UIViewController。
- (void)createViewHierarchyImpl
{
homeViewController = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];
//_rootView = _unityView;
_rootView = homeViewController.view;
//_rootController = [[UnityDefaultViewController alloc] init];
_rootController = homeViewController;
}
到现在为止还好。
问题是,生成XCode的Unity的新版本没有示例来显示带有Unity的UIViewController。
-(void)goToUnity:(id)sender
{
NSLog(@"touch the button is OK");
UIViewController *app = [[UIViewController alloc] initWithNibName:@"UnityView" bundle:nil];
[self.navigationController pushViewController:app animated:YES];
}
因此,什么都不会发生。是否有任何方法在“默认”模式Xcode中调用统一?
谢谢。
发布于 2014-07-04 12:24:49
读了一遍又读了很多遍,测试和错误了很多次,我终于做到了!触摸一个UIButton,打开或做你想象中的任何事情。
我将在这里分享给那些需要更完整的代码的人。
开始:
您需要创建自己的主文件.h和.m,以便自动“否决”统一:
mainAppController.h
#import "UnityAppController.h"
#import "UI/UnityView.h"
#import "iPhone_View.h"
@interface mainAppController : UnityAppController
{
UnityAppController *_unityAppController;
}
- (void)createViewHierarchyImpl;
@end
您必须导入这个H头以控制。
mainAppController.m
#import "mainAppController.h"
@implementation mainAppController
-(void)createViewHierarchyImpl
{
if(_unityAppController == nil)
{
_unityAppController = [[UnityAppController alloc] init];
NSLog(@"Unity Controller was set NICE!!!!");
}
UIStoryboard *storyBoard;
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
{
storyBoard = [UIStoryboard storyboardWithName:@"iPadMain" bundle:nil];
}
else
{
storyBoard = [UIStoryboard storyboardWithName:@"iPhoneMain" bundle:nil];
}
UIViewController *mainVC = [storyBoard instantiateInitialViewController];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = mainVC;
_rootController = [self.window rootViewController];
//_rootController.wantsFullScreenLayout = TRUE;
_rootController.edgesForExtendedLayout = TRUE;
_rootView = _rootController.view;
[self.window makeKeyAndVisible];
}
@end
IMPL_APP_CONTROLLER_SUBCLASS(mainAppController) //THIS IS VERY IMPORTANT!!!
这最后一行是统一,它将“阅读”和使用。
所以,看,我使用了故事板,所以我对视觉导航有更多的控制。但你想用什么就用什么。
在另一个UIViewController中,我将调用统一,如下所示:
ShowARViewController.h
#import <UIKit/UIKit.h>
#import "UnityAppController.h"
#import "UI/UnityView.h"
#import "iPhone_View.h"
@interface ShowARViewController : UIViewController
{
UnityAppController *unityController;
IBOutlet UIView *viewToUnity; // This is linked on Storyboard
}
@end
ShowARViewController.m
#import "ShowARViewController.h"
@interface ShowARViewController ()
@end
@implementation ShowARViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
unityController = (UnityAppController*)[[UIApplication sharedApplication] delegate];
[viewToUnity addSubview:unityController.unityView];
}
// more methods and codes...
@end
看,这样我就可以更多地控制在UIView中添加的统一,并且我可以做我想做的事情,例如,在这个视图上面添加一个按钮。
我希望我真的帮了你。如果您有任何问题或建议,以使这段代码更好,请随时写信给我。
问候
发布于 2014-04-12 20:47:51
试着像这样得到控制器:
UIViewController* controller = [[UnityDefaultViewController] alloc] init];
https://stackoverflow.com/questions/23034712
复制相似问题