Ios 已加载笔尖,但';视图';没有设置出口
我在我的项目中添加了一个新的nib文件,并尝试加载它 但是,当我单击工具栏图标(该图标应该将我带到我创建的视图中)时,我会看到一个Ios 已加载笔尖,但';视图';没有设置出口,ios,cocoa-touch,interface-builder,xib,Ios,Cocoa Touch,Interface Builder,Xib,我在我的项目中添加了一个新的nib文件,并尝试加载它 但是,当我单击工具栏图标(该图标应该将我带到我创建的视图中)时,我会看到一个nsinternalinconsistenceexception,并显示以下消息: 由于未捕获异常而终止应用程序 “NSInternalInconsistencyException”,原因:'-[UIViewController _loadViewFromNibNamed:bundle:]加载了“…”nib,但未设置视图出口 所以我打开了我的nib文件,我看到视图中没
nsinternalinconsistenceexception
,并显示以下消息:
由于未捕获异常而终止应用程序
“NSInternalInconsistencyException”,原因:'-[UIViewController
_loadViewFromNibNamed:bundle:]加载了“…”nib,但未设置视图出口
所以我打开了我的nib文件,我看到视图中没有设置引用出口。但是,我尝试单击“新引用出口”的圆圈并将其拖动到文件的所有者,但它不允许我…我需要做什么才能使视图显示?未设置视图标识-类标识。在将其设置为适当的类后,问题得到了解决。你们是对的,但由于我是新来者,我花了一点时间才弄清楚所有的步骤。以下是对我有效的方法:
- 打开导致问题的XIB文件
- 单击左栏上的文件所有者图标(顶部,看起来像一个黄色框)
- 如果看不到右侧的侧边栏,请单击工具栏中“视图”上方的第三个图标。这将显示右侧的侧边栏
- 在右侧边栏中,单击第四个选项卡——看起来有点像报纸的选项卡
- 在顶部的“自定义类”下,确保类是应与此视图相对应的ViewController的名称。如果没有,请输入它
- 在右侧边栏中,单击最后一个选项卡——看起来像一个带箭头的圆
- 你应该看到“outlets”下面有“view”。将它旁边的圆圈拖到左侧栏上的“视图”图标上(底部的一个,看起来像一个白色正方形,有一个很厚的灰色轮廓)
- 保存xib并重新运行
initWithNibName:bundle:
引起的。我正在使用nib文件中的表视图单元格来定义位于表视图上的条目表单ave a view,挂接到一个视图是没有意义的。相反,如果我调用initWithStyle:
方法,然后从其中加载nib文件,那么事情就会按预期进行。我遇到了相同的问题,但要求的解决方案略有不同。在这种情况下,问题是文件所有者的类,而不是类要设置此选项,我必须单击Interface Builder窗口左下角的“向后播放”图标,然后出现一些选项,将文件所有者、第一响应者和视图的特征隔离开来。单击第一个图标(一个透明的大框),使我能够按照上面的建议设置其自定义类。我刚刚在我的项目中解决了这个问题。大型项目,两个文件。一个是“ReallyLargeNameView”,另一个是“ReallyLargeNameViewController”
基于上面选择的第二个答案,我决定我应该清理我的build.Nada,但我仍然怀疑XCode(因为我有两个相同的类,应该抽象它们,但是呃…),所以一个在工作,一个没有。文件的所有者名称被复制和粘贴,出口被重新隐藏,XCode重新启动,仍然没有任何内容
所以我删除了类似的命名类(这是一个视图)。很快,新的错误“outlet inside not Hocked”字面上是“webView not key value”之类的…基本上说是“Visual Studio更好”。总之…我删除了较小的命名文件,然后砰的一声,它工作了
XCode被类似的命名文件弄糊涂了。而且项目太大,需要重新启动一点,这可能是它的一部分
希望我有一个比“XCode很混乱”更专业的答案,但是现在,XCode变得很混乱。就像我帮助一个小孩一样,我不使用它。它现在可以工作了,:)如果上述方法不能解决任何问题,应该对其他人有利
始终记得清理构建(通过删除模拟器)我通常可以通过重新创建文件所有者和视图之间的连接来修复它。控制从文件所有者到视图的拖动(在IB中),并从弹出菜单中选择“视图”。在我的项目中出现了相同的错误,但原因不同。在我的例子中,我的自定义UITableViewController类中有一个名为“View”的IBOutlet设置。我知道“视图”很特别,因为它是基类的一个成员,但我不认为视图(不同的情况)也会是一个问题。我猜Cocoa的某些区域不区分大小写,加载xib可能就是其中之一。所以我刚刚将它重命名为DefaultView,现在一切都好了。选择文件所有者,然后打开identity Inspector,给出它对应的类名。如果上述方法都不起作用,但仍然无法看到视图出口,则将新的引用出口连接提供给文件的所有者,然后才能看到视图出口。单击视图出口,在视图出口和文件所有者之间建立连接。运行应用程序,这样可以正常工作。我也遇到了同样的问题,但需要不同的解决方案。本例中的问题是文件所有者的类未连接到xib文件。在我的示例中,视图未在xib中查看。
在xib中,视图为siz
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:@"MySettingsViewController" bundle:nibBundleOrNil];
}
PTFilterUserVC *aFilterUserVC = [[PTFilterUserVC alloc] initWithNibName:@"FilterVC" bundle:nil];
//OPTIONAL.This is how 'I' am interested in present the view controller.
[self.navigationController pushViewController:aFilterUserVC animated:YES];
-(void)initCheckView{
CheckView *pCheckViewCtrl = [CheckView instance];
pCheckView = [pCheckViewCtrl view];
[[self view]addSubview:pCheckView];
[pCheckViewCtrl performCheck];
}
+(CheckView *)instance{
static CheckView *pCheckView = nil;
static dispatch_once_t checkToken;
dispatch_once(&checkToken, ^{
pCheckView = [[CheckView alloc]initWithNibName:@"CheckView" bundle:nil];
if ( pCheckView){
[pCheckView initLocal];
**[pCheckView loadView];**
}
});
return pCheckView;
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
Bundle(for: self.classForCoder).loadNibNamed("SampleView", owner: self, options: nil)
addSubview(contentView)
contentView.frame = self.bounds
contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
}
- (id)init {
self = [super init];
if (self) {
CustomController *controller = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass(className) owner:self options:nil];
} return self;
}
CustomController *controller = [[CustomController alloc] init];
- (id)init {
self = [super init];
if (self) {
CustomController *controller = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass(className) owner:self options:nil];
[controller viewDidLoad];
self = controller;
} return self;
}