我需要查看带有活动指示符的子视图。 这是我的代码,但子视图没有出现:
@interface ProgressViewController : UIViewController {
IBOutlet UIActivityIndicatorView *myActivityIndicator;
}
@property (nonatomic, retain) IBOutlet UIActivityIndicatorView *myActivityIndicator;
@end
@implementation ProgressViewController
@synthesize myActivityIndicator;
- (void)viewDidLoad {
[myActivityIndicator startAnimating];
[super viewDidLoad];
}
- (void)viewWillDisappear:(BOOL)animated {
[myActivityIndicator stopAnimating];
}
@end
#import "ProgressViewController.h"
@interface MyViewController : UIViewController {
ProgressViewController *progressViewController;
}
@property (nonatomic, retain) ProgressViewController *progressViewController;
@end
@implementation MyViewController
@synthesize progressViewController
- (void)viewDidLoad
{
progressViewController = [[ProgressViewController alloc] initWithNibName:@"ProgressViewController" bundle:nil];
[self.view addSubview:progressViewController.view];
sleep(4);
[progressViewController.view removeFromSuperview];
[super viewDidLoad];
}
@end
答案 0 :(得分:2)
可能有多种原因,而且您发送的代码仍然有点不清楚,它是哪一个。
首先,你不应该在代码中使用sleep(4) - 它会混淆iOS运行的应用程序引擎以支持用户输入,屏幕刷新等。 您的代码可以轻松更改为:
[self performSelector:@selector(removeMyProgressView:) withObject:progressViewController.view afterDelay:4.0];
并在 removeMyProgressView:函数中 removeFromSuperview 。
此外,这行代码还有错误:
progressViewController = [[ProgressViewController alloc] initWithNibName:@"ProgressViewController" bundle:nil];
应该是
self.progressViewController = [[ProgressViewController alloc] initWithNibName:@"ProgressViewController" bundle:nil];
否则,您不会调用setter函数(@sythesized属性),并且不会保留该对象。可能是它被释放了,因此你没有看到它。
如果这一切都没有,我们会继续抨击它:)
祝你好运!乌迪德。
答案 1 :(得分:1)
-viewDidLoad方法中的所有内容都在一个runloop中发生。这意味着您可以添加和删除活动指示器,而无需让系统实际绘制它。 4秒的睡眠没有帮助。那些只是让runloop需要更长时间才能完成。
答案 2 :(得分:0)
在[super viewDidLoad]
方法
- (void)viewDidLoad