Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 由于表视图控制器初始化,应用程序崩溃_Ios_Objective C_Swift - Fatal编程技术网

Ios 由于表视图控制器初始化,应用程序崩溃

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

我初始化tableView的代码是:

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)