在我的 Objective-C 项目中,我曾经使用 PageMenu用于用户友好导航的库,但我注意到无限的 menuScrollView 和居中选定的菜单项看起来比默认的 PageMenu 漂亮得多。
当我发现PagingMenuController时我尝试将这个 swift 库导入到 obj-c 项目中。一切似乎都很好,头文件已正确创建,已授予对 PagingMeniController 类方法的访问权限。
但是当我尝试使用带有代码的 View Controller 数组来初始化 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)
fatal error: unexpectedly found nil while unwrapping an Optional value
似乎 UIApplication.sharedApplication().keyWindow!.bounds.size 返回 nil。
你觉得这个错误的原因在哪里?
最佳答案
如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展示它是如何工作的。
关于ios - obj-c 项目中的 PagingMenuController swift 库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37652625/