一个视图中的整数变量的值始终在另一个视图中显示0(ZERO)

时间:2011-02-21 12:58:17

标签: iphone objective-c

我想访问另一个视图的视图按钮的标记值,但它总是显示为零。

我声明一个整数变量:NSInteger标签;在songView.h的接口部分并设置其@property(非原子)NSInteger标签; 在songView.m中将其合成为@synthesize标签; 现在我为它分配按钮的标签值,如下所示:

-(IBAction)track1ButtonPressed:(id) sender
{
 self.tag = [sender tag];
}

现在我想在另一个视图中访问这个(标签)值,即audioView,我在audioView.m中这样编码:

songView *songview=[songView alloc];
if (songview.tag==1)
{}
else{}

通过运行此代码,其他部分仍然执行,因为songview.tag的值为0(ZERO), 我还在IB中将按钮的标记值设置为1。

2 个答案:

答案 0 :(得分:1)

首先,您不仅要分配对象,还要初始化它。所以替换

songView *songview=[songView alloc];

CGRect songFrame = CGRectMake(0.f, 0.f, 120.f, 120.f);
songView *songview=[[songView alloc] initWithFrame:songFrame];

initWithFrameUIView的指定初始化程序,我想你的songView类是UIView的子类。

然后我不确定assign@property的默认修饰符,以确保将您的标记属性定义为

@property(nonatomic, assign) NSInteger tag;

然后它应该工作。如果没有,请在track1ButtonPressed:(id) sender方法中设置一个断点,看它是否被调用,并使用调试器手动检查sender对象。

答案 1 :(得分:0)

尝试使用tag..ex之外的其他名称声明整数变量:NSInteger btnTag; 因为通常对于任何视图标签都是零