Iphone ui按钮';在调用方法时以编程方式创建的崩溃
我有一个rootViewController和一个通过编程创建的UIButton。我希望此按钮显示另一个视图控制器。由于某些原因,它会崩溃,并出现以下错误: 架构i386的未定义符号: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
“_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文件复制到项目中。复制过程中一定出了问题。。。谢谢你的帮助!