2010-10-07 71 views
0

我有一个问题,从他的UIViewController访问视图方法。 我仅在2周前开始在xcode中编程,我必须修改其他人制作的程序。无法从UIViewController访问UIView

UIView被拖放到UIViewController的.xib中的界面构建器中,并由方法initWithFrame和drawRect进行初始化。这个视图包含一个NSTimer,当用户点击导航栏的按钮关闭时我需要停止。

所以我在UIViewController中有一个IBAction,它在按下按钮关闭时被激活。这个方法应该启动一个UIView的方法,但它不起作用。 Xcode没有检测到错误或警告,但UIView的代码从未运行。当我启动应用程序时,一切正常,但这。

UIView.h:

@interface Clock3D:UIView的{
...
的NSTimer *定时器;
NSTimer * timerS;
}
...
@property(retain,nonatomic)NSTimer * timer;
@property(retain,nonatomic)NSTimer * timerS;
...
- (void)doneTest;
@end

UIView.m:

@implementation Clock3D
@synthesize定时器,定时器,...
...
- (无效){doneTest

NSLog(@“arret timerS”);
[timerS invalidate];
NSLog(@“arret timer”);
[timer invalidate];

}

UIViewController.h:

进口 “Clock3D.h”

@class Clock3D;

@interface Popup360:{的UIViewController
...
Clock3D * clock3D;
}
...
@property(retain,nonatomic)IBOutlet Clock3D * clock3D; ...
- (IBAction)完成;

@end

的UIViewController。米:

@implementation Popup360
@synthesize ...,clock3D;

- (IBAction)done {
[clock3D doneTest];
[self dismissModalViewControllerAnimated:YES];
}

于是命令[clock3D doneTest]不起作用(从NSLog的doneTest不会出现在日志),但命令[自dismissModalViewControllerAnimated:YES];作品。

感谢您的回复。

回答

0

在IB中检查Popup360的属性view的类型。如果她设置为UIView,则将其更改为。