场景:开发的时候想用同样的xib或者UIStoryboard来实现不一样的业务逻辑,又不想改动原来的代码,平常我们想的是重新复制一份,来修改实现,但是这样会有重复文件和代码的出现,如果要是使用继承的话就完美了,那么xib和storyboard要怎继承呢?
实现:多的不说,少的不唠,直接上代码:
xib继承
SubViewController : ViewController//子控制器继承父类,子控制器实现不同的业务逻辑
SubViewController *vc = [[SubViewController alloc] initWithNibName:@"ViewController" bundle:nil];//子控制器加载父类的xib,子控制器就不用另外创建xib了
[self.navigationController pushViewController:vc animated:YES];
UIStoryboard继承(同理)
SubViewController : ViewController//子控制器继承父类,子控制器实现不同的业务逻辑
ViewController*vc = [[UIStoryboard storyboardWithName:@"ViewController" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController"];//拿到父类的storyboard
object_setClass(vc,[SubViewController class]);//重点来了考试要考:(跳转到自己要实现需求的子类,加载父类的storyboard,此处运用运行时,把父类交换成子类对象,然后跳转)
[self.navigationController pushViewController:vc animated:YES];
网友评论