0

为了练习,我正在尝试从头开始基于标签栏开发一个简单的 iPhone 应用程序,但我遇到了一些问题。我已经按照以下步骤操作: http ://www.techotopia.com/index.php/Creating_an_iPhone_Multiview_Application_using_the_Tab_Bar

该应用程序正确加载三个视图,直到其中没有连接;如果我将任何插座或操作连接到子视图的标签或按钮,应用程序就会崩溃。

例如,我的 firstView.h 包含:

#import <UIKit/UIKit.h>


@interface firstView : UIViewController {
IBOutlet UILabel *resultLabel;
}

-(IBAction)randomizeAction;

@property (nonatomic , retain) IBOutlet UILabel *resultLabel;


@end

和 firstView.m

-(IBAction)randomizeAction:(id)sender
{
//NSInteger rand = arc4random() % 75;
//resultLabel.text = [ [NSString alloc] initWithFormat:@"Random integer: @%",rand];
UIAlertView *alert = [ [UIAlertView alloc] initWithTitle:@"Yeah!" message:@"Yeah" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil ];
[alert show];
[alert release];

}

如果我将标签连接到 resultOutlet 或将按钮连接到“randomizeAction”方法,当我切换到相关视图时应用程序崩溃.. 错误在哪里?

4

3 回答 3

1

在 .h 文件中,您将属性声明为 IBOutlet 两次。因为我认为这不会导致问题,但这只是不必要的。randomizeAction您还在 .h 文件中声明了没有参数,并使用参数实现了它。

您的代码应如下所示:

#import <UIKit/UIKit.h>

@interface firstView : UIViewController {
   UILabel *resultLabel;
}
@property (nonatomic , retain) IBOutlet UILabel *resultLabel;

-(IBAction)randomizeAction:(id)sender;

@end

和 firstView.m

-(IBAction)randomizeAction:(id)sender
{
   //do stuff
}
于 2011-08-07T13:53:26.840 回答
0

从该错误消息看来,您的视图控制器没有在 Interface Builder 中正确连接。您确定您的视图控制器(IB 中的文件所有者)被标识为 firstView 的实例吗?在 XCode 的 Identity Inspector 中检查它是什么类。

如果您可以显示声明和创建视图控制器的代码(最有可能在 App Delegate 中),这也会很有帮助。

于 2011-08-07T14:54:37.133 回答
-1

我不确定,但我认为你必须改变这个:

@interface DetailViewController : UIViewController

至:

@interface firstView : UIViewController
于 2011-08-07T13:25:52.153 回答