0

我有两节课..

在其中一个中,我使用了六个带有标签的按钮。

像这样

[btnF1 setTag:1];

我正在使用这个标签

像这样..

- (void)showPhoto:(UIButton*)btnSender       {    
    NSLog(@"showPhoto:%d",btnSender.tag);   
}  

现在我想创建存储值的变量,btnSender.tag我也可以在任何其他类中使用该值......

我做了两个方法.. 1)我在这个类中创建了一个变量来存储 btnSender.tag 值,我尝试在其他类中使用这个值,但它给了我 null

2)我尝试了全局变量,但无法在 NSLog 中看到全局变量的值。

我没有使用 IB

帮帮我...:)

4

3 回答 3

1

您可以使用 NSUserDefaults 或 UILabel 来存储按钮标签的值。但是对于使用 UILabel,您必须将其输出到您的 XIB 中的隐藏标签,然后它才会保留其价值。

NSUserDefaults 永久存储该值,直到您刷新它。所以不会有保留值的问题。

所以更好的方法是使用NSUserDefaults如下所示。可能你可以把它放在一个事件上(例如 ButtonClick 如果你要在按钮点击时进入下一个视图。)

NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults]; 
[userDef setObject:[NSString stringWithFormat:@"%d",btnSender.tag] forKey:@"BtnTag"];

现在,当您转到下一个视图时,您可以使用以下代码访问它:

int tagValue = [[[NSUserDefaults alloc] valueForKey:@"BtnTag"] intValue];

希望这对您有所帮助。

于 2011-03-18T06:43:34.663 回答
0
@interface urViewController : UIViewController 

{
 int buttonTag;
}
@property int buttonTag;
于 2011-03-18T06:56:32.310 回答
0

只有一个对象应该负责直接处理视图中的对象(按钮和其他任何东西),那就是视图控制器。如果其他对象想要更改按钮上的标签、禁用按钮或以其他方式修改按钮,它应该通过与视图控制器交谈来实现。当您可以直接访问按钮时,这似乎是一种迂回的做事方式,但是......

  • 它完全解决了您共享标签的问题。除了视图控制器,没有人需要关心标签。
  • 将责任集中在视图中的所有内容可以使您的代码更少错误且更易于维护。
于 2011-03-18T07:04:53.537 回答