在调用方法时以编程方式创建的UIButton

时间:2012-03-22 13:40:22

标签: iphone objective-c ios

我有一个rootViewController并且有一个以编程方式创建的UIButton。我希望这个UIButton显示另一个视图控制器。由于某种原因,它崩溃时出现以下错误:

  

架构i386的未定义符号:
  “_OBJC_CLASS _ $ _ TutorialViewController”,引自:         RootViewController.o中的objc-class-ref ld:找不到架构i386的符号collect2:ld返回1退出状态

这是创建Info UIButton的代码。这段代码在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];
}

感谢您的帮助。

6 个答案:

答案 0 :(得分:5)

adig可能是对的。

另外,从技术上来说,这并不会导致崩溃。"由于此链接器错误,它无法构建。"你可以说它是一个链接器错误,因为它说," ld返回1退出状态"。 ld是链接器。

在幕后,XCode会在运行之前编译并链接您的代码。如果在编译或链接过程中失败,则表示构建失败,"不是"崩溃。"崩溃是应用程序构建时,但在运行时突然停止。造成这种情况的一个常见原因是访问nil指针。

答案 1 :(得分:2)

检查目标设置,在“编译源”下的“构建阶段”列表中,列表中有TutorialViewController.m文件。

答案 2 :(得分:1)

而不是(IBAction)doHelp:(id)sender你必须写(void)doHelp ....试试这个:)

答案 3 :(得分:0)

你是#importing .h文件,而不是.m文件吗?

问题不在于您的UIButton,问题是TutorialViewController类没有正确编译。

答案 4 :(得分:0)

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

答案 5 :(得分:-1)

我认为您必须写(IBAction)

而不是(void)