首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从UIStoryBoard在iOS中启动子UIStoryBoard

从UIStoryBoard在iOS中启动子UIStoryBoard
EN

Code Review用户
提问于 2018-11-20 16:29:16
回答 1查看 735关注 0票数 0

我试图在UIViewController中使用继承,其中基类在故事板中有XIB。我担心的是用那个XIB启动不同的子类课程。

我不能单独使用XIB文件,而不能使用情节提要,因为它具有静态UITableViewCells

下面是我目前如何在SWIFT中使用object_setClass方法来管理它:

家长班:

代码语言:javascript
复制
class MeetingViewController: UITableViewController {

    private(set) var project: CDProject?
    private(set) var meeting: CDMeeting?

    static func initWith(project: CDProject?, meeting: CDMeeting?) -> MeetingViewController {
        let storyboard = UIStoryboard(name: "Meeting", bundle: nil)
        let meetingVC = storyboard.instantiateViewController(withIdentifier: "MeetingVCId") as! MeetingViewController
        meetingVC.project = project
        meetingVC.meeting = meeting
        return meetingVC
    }
}

儿童班-1:

代码语言:javascript
复制
class MeetingInfoViewController: MeetingViewController {

    static func initWith(meeting: CDMeeting) -> MeetingInfoViewController {
        let meetingVC = MeetingViewController.initWith(project: nil, meeting: meeting)
        object_setClass(meetingVC, MeetingInfoViewController.self)
        return meetingVC as! MeetingInfoViewController
    }
}

儿童班-2:

代码语言:javascript
复制
class MeetingCreateViewController: MeetingViewController {

    static func initWith(project: CDProject) -> MeetingCreateViewController {
        let meetingVC = MeetingViewController.initWith(project: project, meeting: nil)
        object_setClass(meetingVC, MeetingCreateViewController.self)
        return meetingVC as! MeetingCreateViewController
    }
}

这很好,没有任何问题;但我只是好奇,如果:

还有其他方法来处理这种情况吗?

这种方法有什么副作用吗?

3这是可以改进的吗?

也可以自由地指出其他事情,而不是初始化!

EN

回答 1

Code Review用户

发布于 2018-12-21 03:37:55

  1. 没有其他方法来处理这种情况。故事板VC不能被子类而不复制UI。
  2. 我很惊讶这个能起作用。object_setClass只是更改isa指针,因此内存仍然是为父类而不是子类设置的。如果您试图设置父实例中不存在的实例变量,它可能会崩溃。
  3. 将两个VC重构为一个(因为UI毕竟是相同的),然后使用组合来表示差异。
票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/208079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档