【发布时间】:2017-03-03 20:33:37
【问题描述】:
在我的 Swift 3/Obj-C 应用程序中,我无法显示一个 swift 视图控制器,它是 Obj-C 类的子类。
以下代码完美运行:
NavigationController.swift
func myMethod(){
...
let vc = ParentViewController.init(someParameter: parameter) // << results in desired screen
vc?.stringProperty = "someString"
self.pushViewController(vc!, animated: true)
}
SuperParentViewController.h
@interface SuperParentViewController : UIViewController
@property (nonatomic, strong) NSString *stringProperty;
- (instancetype)initWithSomeParameter:(SomeClass *)someParameter;
@end
ParentViewController.h
@interface ParentViewController : SuperParentViewController
// numerous properties are declared here
@end
ParentViewController.m
@implementation ParentViewController
...
- (void)viewDidLoad{
[super viewDidLoad];
// a bunch of properties are set
}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
// more properties are set
}
...
@end
但是,如果我将 ParentViewController 子类化并尝试呈现子类“SubclassViewController”,则会导致屏幕仅显示导航栏项目;屏幕的其余部分是空白的:
NavigationController.swift
func myMethod(){
...
let vc = SubClassedViewController.init(someParameter: parameter) // << results in blank screen
vc?.stringProperty = "someString"
self.pushViewController(vc!, animated: true)
}
SubClassedViewController.swift
class SubClassedViewController: ParentViewController
{
// nothing in this file yet
}
谁能告诉我为什么 SubClassedViewController 无法显示 ParentViewController 的相同内容?
【问题讨论】:
-
我会检查是否调用了超类中的所有视图循环方法。此外,查看 Xcode 中的 View Hierarchy 可能会有所帮助。
标签: objective-c inheritance swift3 subclass viewcontroller