我是目标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”;
但它不会调用任何方法或类。任何微妙的想法?感谢。
答案 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
未启动。添加viewDidLoad
:displayString = [NSMutableString new];