无法从 UIViewController 访问 UIView

Posted

技术标签:

【中文标题】无法从 UIViewController 访问 UIView【英文标题】:can't access UIView from UIViewController 【发布时间】:2010-10-07 10:07:14 【问题描述】:

我在从他的 UIViewController 访问视图方法时遇到问题。 我两周前才开始在 xcode 中编程,我必须修改其他人制作的程序。

UIView在UIViewController的.xib中的interface builder中被拖放,并通过initWithFrame和drawRect方法进行初始化。此视图包含一个 NSTimer,当用户单击导航栏的按钮关闭时,我需要停止它。

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

UIView.h:

@interface Clock3D : UIView ... NSTimer *timer; NSTimer *timerS; ... @property(保留,非原子)NSTimer *timer; @property(保留,非原子)NSTimer *timerS; ... -(无效)完成测试; @结束

UIView.m:

@implementation Clock3D @synthesize 计时器,计时器,... ... -(void) doneTest

NSLog(@"arret timerS"); [定时器失效]; NSLog(@"arret 计时器"); [定时器无效];

UIViewController.h:

导入“Clock3D.h”

@class Clock3D;

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

@结束

UIViewController.m:

@implementation Popup360 @synthesize ...,clock3D;

-(IBAction) 完成 [clock3D doneTest]; [自我dismissModalViewControllerAnimated:YES];

所以命令 [clock3D doneTest] 不起作用(来自 doneTest 的 NSLog 永远不会出现在日志中)但是命令 [self dismissModalViewControllerAnimated:YES];有效。

感谢您的回复。

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于无法从 UIViewController 访问 UIView的主要内容,如果未能解决你的问题,请参考以下文章

从随机类访问 UIViewController

从其子 UIViewControllers 访问父 UIViewController

从 UIViewController 访问静态行

我应该在哪里从 UIViewController 中的 firebase 加载数据

如何从 UIViewController 访问 scrollViewDidScroll

XCode:无法在界面构建器中将 UIView 拖放到 UIViewController 上