我试图在UIViewController中使用继承,其中基类在故事板中有XIB。我担心的是用那个XIB启动不同的子类课程。
我不能单独使用XIB文件,而不能使用情节提要,因为它具有静态UITableViewCells。
下面是我目前如何在SWIFT中使用object_setClass方法来管理它:
家长班:
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
}
}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
}
}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这是可以改进的吗?
也可以自由地指出其他事情,而不是初始化!
发布于 2018-12-21 03:37:55
https://codereview.stackexchange.com/questions/208079
复制相似问题