2010-01-10 132 views
1

我有访问公共变量“活动”,这是一种UIActivityIndicatorView类型,参见类下面声明在QuickStartViewController.h一个问题:访问变量/函数从子类的目标C

@interface QuickStartViewController : UIViewController <ABPeoplePickerNavigationControllerDelegate> { 
@public 
IBOutlet UIActivityIndicatorView *activity; 

} 

@property (nonatomic, retain) UIActivityIndicatorView *activity; 

@end 

该函数是从称为其他类:

#import "QuickStartViewController.h" 
@interface NumberValidator : QuickStartViewController.... 

见下文:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
[activity startAnimating]; 
NSLog(@"This function is called, but [activity startAnimating] still doesn't work..."); 
} 

注:[activity startAnimating]QuickStartViewController类中调用时工作正常。

对于[activity startAnimating]不工作,您有什么建议吗?

回答

0

我将首先在-connectionDidFinishLoading中设置断点:并验证该活动不是零。

0

这可能有效 - 即活动指标开始动画。但可能还有另一个问题 - 在您停止处理connectionDidFinishLoading方法之前,GUI不会刷新,因此似乎[activity startAnimating]不起作用。 (您可以通过不调用[activity stopAnimating]来测试它 - 它应该最终显示出来。)

请参阅this thread (connectionDidFinishLoading - how to force update UIView?)my response

+0

嗨亚当, 我已经试过这 - ?没有运气:( 亲切的问候, Mitul – 2010-01-10 22:35:34

0

它是(a)不编译,(b)当它撞到那里时崩溃,或者(c)只是没有做任何事情?我怀疑是(c),那是因为你没有活动指标。尝试将活动的值记录到控制台,并验证其有效的对象。

0

感谢您的快速回复。

connectionDidFinishLoading不会成功执行,并且我已经放置了NSLog来确认。但是,startAnimating没有。

注意:

如果我[活动startAnimating];;内以下,然后它工作...:

QuickStartViewController.m(不NumberValidator.m)

- (IBAction)showPicker:(id)sender { 
[activity startAnimating]; 
... 
} 
+0

是在''connectionDidFinishLoading'零activity'你有没有测试我的建议,不将其关闭,并等待如果在完成处理URL响应时出现? – 2010-01-10 14:17:04

1

IBOutlet宏表明UIActivityIndicatorView将构造并分配时的QuickStartViewController实例或者NumberValidator通过一个NSBundle的+loadNibNamed:owner:options:实例或调用UIViewController的initWithNibName:bundle:

如果没有实例您NumberValidator通过它的笔尖,那么活动属性将不会被分配。如果您是通过笔尖构建它,则您尚未通过CTRL +将UIActivityIndicatorView拖动到控制器中,在Interface Builder中为该插座分配合适的UIActivityIndicatorView