Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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 XIB文件使用默认的ViewController类,而不是在文件';业主_Ios_Objective C_Xcode - Fatal编程技术网

Ios XIB文件使用默认的ViewController类,而不是在文件';业主

Ios XIB文件使用默认的ViewController类,而不是在文件';业主,ios,objective-c,xcode,Ios,Objective C,Xcode,在任何人将此标记为重复之前,我已经彻底搜索了堆栈溢出,但所有建议都没有帮助 问题:我已将自定义视图添加到我的主详细信息应用程序,当单击按钮时,它会被推到主视图的顶部。我已将xib文件的所有者设置为自定义类。如果我只建立了一个IBOutlet连接,应用程序就会崩溃并说“类不符合密钥的键值编码”,我已经在自定义类的viewDidLoad函数中放置了一个NSLog,我发现它从未被实例化。我觉得我可能错过了一个非常简单的步骤,但从我从其他所有关于这个问题的帖子中可以看出,他们的解决方案不适合我 设置VI

在任何人将此标记为重复之前,我已经彻底搜索了堆栈溢出,但所有建议都没有帮助

问题:我已将自定义视图添加到我的
主详细信息应用程序
,当单击
按钮
时,它会被推到主视图的顶部。我已将
xib
文件的所有者设置为自定义类。如果我只建立了一个
IBOutlet
连接,应用程序就会崩溃并说“类不符合密钥的键值编码”,我已经在自定义类的
viewDidLoad
函数中放置了一个
NSLog
,我发现它从未被实例化。我觉得我可能错过了一个非常简单的步骤,但从我从其他所有关于这个问题的帖子中可以看出,他们的解决方案不适合我

设置VIEWCONTROLLER.m:

#import "SettingsViewController.h"

@interface SettingsViewController ()

@end

@implementation SettingsViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    NSLog(@"viewDidLoad");
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
启动视图的代码行:

UIViewController *settingsViewController = [[UIViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
[self.navigationController pushViewController:settingsViewController animated:YES];
我已经通过堆栈溢出尝试过的事情:

  • 确保文件的所有者类设置为自定义类名

  • 确保
    viewcontroller
    中没有任何已在代码中删除或重命名的额外
    IBOutlets

  • 删除文件并重新创建它们

  • 清理项目,
    kill xcode
    ,从设备上删除应用程序,重新打开
    xcode
    并重建项目

  • 从头开始重建项目

  • 提前感谢您的建议

    这一行:

    UIViewController *settingsViewController = [[UIViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
    
    应该是:

    SettingsViewController *settingsViewController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
    
    文件所有者类的名称基本上只是IB告诉它哪些连接可用的信息。在实例化过程中实际上没有使用它。通过调用
    [[UIViewController alloc]…
    您正在创建一个普通的
    UIViewController
    实例(显然没有定义密钥)。

    此行:

    UIViewController *settingsViewController = [[UIViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
    
    应该是:

    SettingsViewController *settingsViewController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
    

    file owner类的名称基本上只是IB告诉它哪些连接可用的信息。在实例化过程中它实际上没有被使用。通过调用
    [[UIViewController alloc]…
    您正在创建一个普通的
    UIViewController
    实例(显然没有定义您的密钥).

    效果很好,我知道会是那样简单。谢谢!!效果很好,我知道会是那样简单。谢谢!!