Mat*_*mon 12 objective-c storyboard uiviewcontroller uiview ios
我在Storyboard中创建了ViewController,我正在使用它
instantiateViewControllerWithIdentifier:
Run Code Online (Sandbox Code Playgroud)
加载它.但我需要将此VC作为基类,并使用3-4个子类来更改其属性.
如何获取我的子类的实例instantiateViewControllerWithIdentifier?
Chi*_*buZ 15
Swift 3中的 @Bhagyesh版本:
class func instantiateFromSuperclassStoryboard() -> SubclassViewController {
let stroryboard = UIStoryboard(name: "Main", bundle: nil)
let controller = stroryboard.instantiateViewController(withIdentifier: "BaseViewController")
object_setClass(controller, SubclassViewController.self)
return controller as! SubclassViewController
}
Run Code Online (Sandbox Code Playgroud)
小智 6
您将必须使用对象c运行时。覆盖子类的init方法。使用“ instantiateViewControllerWithIdentifier”创建一个BaseViewController对象。然后使用objc_setClass方法设置创建对象的类。以下代码将进入SubclassViewController.m。
- (instancetype)init {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"main" bundle:[NSBundle mainBundle]];
UIViewController *baseClassViewController = [storyboard instantiateViewControllerWithIdentifier:@"baseClassIdentifier"];
object_setClass(baseClassViewController, [SubclassViewController class]);
return (SubclassViewController *)baseClassViewController;
}
Run Code Online (Sandbox Code Playgroud)
之后,您可以使用简单的[[SubclassViewController alloc] init]简单地创建SubclassViewController对象。
Dan*_* T. -1
就投吧。
MyController *controller = (MyController *)[self.storyboard instantiateViewControllerWithIdentifier:@"myController"];
Run Code Online (Sandbox Code Playgroud)
或斯威夫特:
let controller = storyboard?.instantiateViewControllerWithIdentifier("myController") as! MyController
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2506 次 |
| 最近记录: |