-1

所以我尝试了很多不同的方式,但我无法让它发挥作用。我试图在不同的类中更改 UIbutton 的状态。

类1.h

@property (strong, nonatomic) IBOutlet UIButton *monthly;

类2.m

- (void)viewDidLoad
{
    ViewController *vc = [[ViewController alloc] init];
    vc.monthly.enabled = NO;
}

无论我尝试什么以及将代码放在哪里,按钮状态都不会改变。当我在 class2.m 中记录状态时:

NSLog(vc.monthly.enabled ? @"Yes" : @"No");

它总是返回 No,即使我只是YES在我的 class2.m 中声明它。长话短说:我的按钮属性没有从不同的类更新。如果您需要查看更多代码,请告诉我,我会尽快更新。

4

3 回答 3

1

我认为问题出在类实例上。以下行创建新实例

ViewController *vc = [[ViewController alloc] init];

这就是为什么您的按钮状态没有改变的原因,您必须获取先前创建的实例的引用,而无需创建新实例。

为此,您可以使用 AppDelegate 文件来声明 class1 的属性。

看下面的代码

AppDelegate.h

@Property(nonatomic, ratain) ViewController *vc;

AppDelegate.m

@synthesize vc;

现在在需要时分配和初始化 vc,如下所示。

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; appDelegate.vc=[[ViewController alloc] 初始化];

也不要忘记在您编写上述代码的地方导入 AppDelegate.h 文件。

现在使用 appDelegate.vc,您可以在项目的所有类中使用 View Controller 的所有属性。

于 2013-05-27T10:21:06.017 回答
1

主要问题是每次要检查按钮状态时都在创建新实例。但是按钮状态是针对您在 中创建的按钮class1.h。所以你需要你应该在类中创建按钮Appdelegate并从你正在检查按钮状态的类中获取实例Appdelegate并检查按钮的状态。我认为这会有所帮助。

于 2013-05-27T10:28:23.127 回答
0

ViewController使用已经在堆栈中的类的对象访问按钮。无需创建像ViewController *vc = [[ViewController alloc] init];. 当你这样做时,它会创建一个新对象,所以你不会得到写入的东西。

于 2013-05-27T10:20:35.173 回答