我通过StoryBoard将UIButton放在UIVIewController上。
xxxVIewController.h中的
@interface xxxViewController : UIViewController{
IBOutlet UIButton *But;
}
@property (retain, nonatomic) IBOutlet UIButton *But;
我想从另一个类中访问“* But”来改变UIButton的setimage。
我想如果我能得到UIViewController的实例,它就解决了......
有没有人给我提示
感谢He-Was,Jasper Blues我添加了评论。
一个是xxxViewController,它不包含导航控制器。 它只包含四个按钮。
另一个是TimerClass(NSObject) 管理申请时间。
TimerClass类有计时器。 我想做的是 从TimerClass每隔几秒更改xxxViewController上的按钮颜色。
我可以轻松访问TimerClass方法。 因为xxxViewController有TimerClass实例。
但是xxxViewController是自动生成的,所以我不知道如何从TimerClass获取xxxViewController实例。
答案 0 :(得分:1)
你是对的,在声明属性后,你需要一个指向xxxViewController的指针,来自将要进行更新的类。
如果它在UINavigationController中你可以从那里访问它。否则(我试图保持这个简单,以防你刚刚开始)你可以把它放在例如AppDelegate上。
答案 1 :(得分:1)
我会设置xxxVIewController
作为TimerClass
的代理人,当您创建TimerClass
个实例时,请将代理设置为self
。
即:
self.timer = [[TimerClass alloc] init];
self.timer.delegate = self; // This assumes that you have already created a declared property called delegate in your `TimerClass` class
然后,当需要更新按钮时,您应该在xxxVIewController
中调用委托函数并让它更新自己的按钮:
// Or whatever method that you want called
if (self.delegate respondsToSelector(@selector(changeButtonColor)))
{
[self.delegate changeButtonColor];
}
如果您不熟悉,请阅读协议,您将看到以更一般的方式实现此协议的好方法。