obj-c 项目错误中的 PagingMenuController swift 库
Posted
技术标签:
【中文标题】obj-c 项目错误中的 PagingMenuController swift 库【英文标题】:PagingMenuController swift library in obj-c project error 【发布时间】:2016-06-06 08:20:29 【问题描述】:在我的objective-c 项目中,我曾经使用PageMenu 库进行用户友好的导航,但我注意到无限的menuScrollView 和居中的选定菜单项看起来比默认的PageMenu 漂亮得多。
当我找到PagingMenuController 时,我尝试将这个 swift 库导入到 obj-c 项目中。一切似乎都很好,正确创建了头文件,授予了对 PagingMeniController 类方法的访问权限。
但是当我尝试使用视图控制器数组初始化 PagingMenuController 类时:
#import "moyoutlet-Swift.h"
UIViewController* vc = [[UIViewController alloc] init];
vc.view.backgroundColor = [UIColor redColor];
vc.menuItemDescription = @"vc";
UIViewController* vc1 = [[UIViewController alloc] init];
vc1.view.backgroundColor = [UIColor whiteColor];
vc1.menuItemDescription = @"vc1";
NSArray* arr = [NSArray arrayWithObjects:vc,vc1, nil];
PagingMenuController* pvc = [[PagingMenuController alloc] initWithViewControllers:arr];
[self.view addSubview:pvc.view];
xcode 在 MenuItemView.swift 的方法中显示错误
calculateLabelSize(label: UILabel, windowSize: CGSize = UIApplication.sharedApplication().keyWindow!.bounds.size)
致命错误:在展开 Optional 时意外发现 nil 价值
似乎 UIApplication.sharedApplication().keyWindow!.bounds.size 返回 nil。
你怎么看,这个错误的原因在哪里?
【问题讨论】:
【参考方案1】:正如Acecilia 所说,this discussion 中描述了问题,解决方案是在 -(void)viewDidAppear 中制作所有内容,例如:
-(void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
FirstViewController* fvc = [sb instantiateViewControllerWithIdentifier:@"FirstViewController"];
fvc.title = @"First View Controller";
fvc.view.backgroundColor = [UIColor grayColor];
SecondViewController* svc = [sb instantiateViewControllerWithIdentifier:@"SecondViewController"];
svc.title = @"Second View Controller";
svc.view.backgroundColor = [UIColor lightGrayColor];
PagingMenuController* pvc = [[PagingMenuController alloc] initWithViewControllers:@[fvc,svc]];
[self addChildViewController:pvc];
[self.view addSubview:pvc.view];
我创建了example project 来展示它的工作原理。
【讨论】:
以上是关于obj-c 项目错误中的 PagingMenuController swift 库的主要内容,如果未能解决你的问题,请参考以下文章
理解 Obj-C 中的 UITabBarController 子类初始化代码