Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/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
Iphone ui按钮';在调用方法时以编程方式创建的崩溃_Iphone_Objective C_Ios - Fatal编程技术网

Iphone ui按钮';在调用方法时以编程方式创建的崩溃

Iphone ui按钮';在调用方法时以编程方式创建的崩溃,iphone,objective-c,ios,Iphone,Objective C,Ios,我有一个rootViewController和一个通过编程创建的UIButton。我希望此按钮显示另一个视图控制器。由于某些原因,它会崩溃,并出现以下错误: 架构i386的未定义符号: “_OBJC_CLASS_$_TutorialViewController”,引用自: 在RootViewController.o ld:symbol中找不到架构i386 collect2:ld的objc类引用返回1退出状态 下面是创建信息按钮的代码。此代码位于loadView方法中: // Create a

我有一个rootViewController和一个通过编程创建的UIButton。我希望此按钮显示另一个视图控制器。由于某些原因,它会崩溃,并出现以下错误:

架构i386的未定义符号:
“_OBJC_CLASS_$_TutorialViewController”,引用自: 在RootViewController.o ld:symbol中找不到架构i386 collect2:ld的objc类引用返回1退出状态

下面是创建信息按钮的代码。此代码位于loadView方法中:

 // Create a Button to get Help          
 UIButton *helpButton =  [UIButton buttonWithType:UIButtonTypeInfoDark ] ;
 CGRect buttonRect = helpButton.frame;

 // CALCulate the bottom right corner
 buttonRect.origin.x = self.view.frame.size.width - buttonRect.size.width - 8;
 buttonRect.origin.y = buttonRect.size.height - 8; 
 [helpButton setFrame:buttonRect];

 [helpButton addTarget:self action:@selector(doHelp:) forControlEvents:UIControlEventTouchUpInside];
 [self.view addSubview:helpButton];

}
以下是转换到另一个视图控制器的操作:

- (IBAction)doHelp:(id)sender{
 NSLog(@"help button pressed");

 TutorialViewController *sampleView = [[[TutorialViewController alloc] init] autorelease];
 [sampleView setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
 [self presentModalViewController:sampleView animated:YES];
}

谢谢您的帮助。

我认为您必须编写
(void)
而不是
(iAction)
,在编译源代码列表下的构建阶段检查目标设置,列表中有TutorialViewController.m文件

而不是
(iAction)doHelp:(id)sender
您必须编写
(void)doHelp
…尝试以下操作:)

是否导入.h文件而不是.m文件


问题不在于UIButton,而在于TutorialViewController类没有正确编译

阿迪格可能是对的

另外,从技术上讲,这不是一个“崩溃”。它“构建失败,带有此链接器错误。”您可以判断这是一个链接器错误,因为它说,“ld返回了1个退出状态”。ld是链接器


在封面下,XCode在运行代码之前编译并链接代码。如果在编译或链接过程中失败,则是“构建失败”,而不是“崩溃”。崩溃是指应用程序构建时,但在运行时突然停止。一个常见的原因是访问零指针。

非常基本,但有时我们可能会错过它:)
您是否在.h文件中声明了相同的方法?

没有将iAction定义为void:#定义iAction void但按钮不是由IB创建的…因此我认为我们不应该编写(void)而不是(IBOutlet)?@hanumadev:Remove(id)sender from ur method…我认为这是最终的解决方案…@Goti您的答案不正确。在与UI元素关联的操作中,使用
(void)
而不是
(iAction)
是一个错误的概念。您为什么要用“init”而不是“initWithNibName:bundle”初始化视图控制器:“?init应该可以,最坏的情况是视图控制器没有视图,并且显示为黑色。也许他从这个init方法调用
initWithNibName:bundle:
。我经常这样做。好吧,这不是崩溃,而是构建失败,对吗?事实上,这让我很困惑。或者选择TutorialViewController.m并选中右侧栏中的“目标成员身份”。@MatthiasBauch Nifty!我不知道:)你是对的!我将TutorialViewController文件复制到项目中。复制过程中一定出了问题。。。谢谢你的帮助!