Ios 由于表视图控制器初始化,应用程序崩溃
我初始化tableView的代码是:Ios 由于表视图控制器初始化,应用程序崩溃,ios,objective-c,swift,Ios,Objective C,Swift,我初始化tableView的代码是: convenience override init(style: UITableViewStyle) { self.init(style: .Grouped) // Custom initialization self.title = NSLocalizedString("mdm.agent.common.desktopCentral", comment : "") } 错误是线路上的EXC\u错误访问 self.init(sty
convenience override init(style: UITableViewStyle) {
self.init(style: .Grouped)
// Custom initialization
self.title = NSLocalizedString("mdm.agent.common.desktopCentral", comment : "")
}
错误是线路上的EXC\u错误访问
self.init(style: .Grouped)
为什么这种类型的初始化会引发错误,但却适用于目标c?目标c代码为:
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:UITableViewStyleGrouped];
if (self) {
// Custom initialization
self.title = NSLocalizedString(@"mdm.agent.common.desktopCentral", nil);
}
return self;
}您需要在构造函数中调用超类init方法,或者在自己的类中调用指定的初始值设定项 在您发布的示例Objective-C代码中,有一行
self = [super initWithStyle:UITableViewStyleGrouped];
此行调用的是initWithStyle:
的超类实现
在代码中,您正在同一个方法中调用self.init(style:.Grouped),这将导致无限递归。您可以通过两种不同的方式修复此问题,或者调用不同的指定初始值设定项,例如self.init()
,或者删除便利性
关键字以使其成为指定的初始值设定项,这将允许您调用超类实现
您可能希望执行第二个选项,如下所示:
override init(style tableStyle: UITableViewStyle) {
super.init(style: style) //use the style value passed into the method
// Custom initialization
self.title = NSLocalizedString("mdm.agent.common.desktopCentral", comment : "")
}
在init(style:UITableViewStyle)中首先使用super init函数你能编码它并让我知道你的确切意思吗?错误:便利初始值设定项必须委托(使用self.init)而不是链接到超类初始值设定项(使用super.init)错误:必需的初始值设定项(init:coder)必须由“UITableViewController”的子类提供。我是通过第二种方式提供的。是的,必须重写init:coder类。如果不需要支持NSCoding协议,可以将实现保留为空(只是一个log语句)。现在,我正在didfinishlaunching中将此控制器设置为let enrolledView=DetailsViewController()self.navigationController?.pushViewController(enrolledView,动画:true)