在Utility app的视图控制器中调用一个函数

时间:2010-07-13 21:37:59

标签: iphone objective-c uiviewcontroller subclass

我是目标C的新手,我有c ++背景。我想在屏幕上的标签中显示一个值。我从MainView.m调用标签值。但是,单击按钮而不是打印值后,标签变为空白。问题是什么?这是代码。

MainView.h

@interface MainView:UIView {  int a; }

- (int)vr;

@end

MainView.m

- (int)vr {  返回100; }

@end

MainViewController.h

@interface MainViewController:UIViewController {

IBOutlet UILabel * myLabel;

NSMutableString * displayString;

MainView * view1; }

@property(非原子,保留)UILabel * myLabel;

@property(nonatomic,retain)NSMutableString * displayString;

  • (IBAction为)showInfo;

  • (IBAction)pressButton:(id)sender;

@end

MainViewController.m

@synthesize myLabel,displayString;

- (IBAction)pressButton:(id)sender {

[displayString appendFormat:@"%i", view1.vr];
myLabel.text = displayString;}



 - (void)viewDidLoad {
 view1 = [[MainView alloc] init];
 [super viewDidLoad];}

- (void)dealloc {
[view1 dealloc];
[super dealloc];}

我没有提到自动生成的代码。这足以得到全貌。我尝试了很多来调试这个东西。我相信IBAction执行直接命令

  

myLabel.text = @“string”;

但它不会调用任何方法或类。任何微妙的想法?感谢。

1 个答案:

答案 0 :(得分:0)

几个问题:

1
MainView.h中,您声明-(id) vr;
MainView.m中,它返回int。

2
也许pressButton没有连接到Interface Builder中的正确事件(它通常在内部触摸) 尝试写入以登录此方法。

3
也许myLabel未与Interface Builder中的标签相关联 尝试将tome硬编码字符串设置为标签的文本属性。

4
你是否在某个地方发起view1? 你也可以发布这段代码吗?

5
您可以使用[displayString appendFormat:@"%i", view1.vr]; ...

编辑(由于问题的变化):

6
[super viewDidLoad];行应该是viewDidLoad内的第一行。

7
[view1 dealloc]; - 永远不要直接在对象上调用dealloc。请致电release。唯一可以并且应该使用dealloc的地方是[super dealloc];方法中的行dealloc

8
在Stack Overflow中格式化问题/答案时,请记住每个代码行应至少以4个空格(或制表符)开头。尝试通过在每个代码行的开头添加4个空格来重新格式化您的问题。

9
我认为displayString未启动。添加viewDidLoaddisplayString = [NSMutableString new];

中的下一行