无法从 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的主要内容,如果未能解决你的问题,请参考以下文章
从其子 UIViewControllers 访问父 UIViewController
我应该在哪里从 UIViewController 中的 firebase 加载数据