我是目标C的新手,我有一个c背景 . 我想在屏幕上的标签中显示一个值 . 我从MainView.m调用标签值 . 但是,单击按钮而不是打印值后,标签变为空白 . 问题是什么?这是代码 .
MainView.h
@interface MainView:UIView {int a; }
- (int)vr;
@结束
MainView.m
- (int)vr {return 100; }
@结束
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)发件人;
@结束
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 回答
几个问题:
1
在
MainView.h
中,您声明了-(id) vr;
在
MainView.m
中它返回int .2
也许
pressButton
没有连接到Interface Builder中的正确事件(它通常在内部触摸) .尝试写入以登录此方法 .
3
也许
myLabel
未连接到Interface Builder中的标签 .尝试将tome硬编码字符串设置为label的text属性 .
4
你在某个地方发起了
view1
吗?你也可以发布这段代码吗?
5
你可以用
[displayString appendFormat:@"%i", view1.vr];
...EDIT (由于有问题的变化):
6
[super viewDidLoad];
行应该是viewDidLoad
内的第一行 .7
[view1 dealloc];
- 永远不要直接在对象上调用dealloc
. 请改为呼叫release
. 唯一可以并且应该使用dealloc
的地方是dealloc
方法中的行[super dealloc];
.8
在Stack Overflow中格式化问题/答案时,请记住每个代码行应至少以4个空格(或制表符)开头 . 尝试通过在每个代码行的开头添加4个空格来重新格式化您的问题 .
9
我认为
displayString
没有发起 . 添加viewDidLoad
中的下一行:displayString = [NSMutableString new];