在我基于视图的应用程序中,我将oneview加载为mainview,将另一个视图加载为mainview的子视图。它的工作代码片段很好,
在mainviewcontroller中,
IBOutlet UIView *subView;
@property(nonatomic,retain) UIView *subView;
@synthesize subView;
[subView release];
//add subview
[self.view addSubview:subView];
//removefromsubview
[subView removeFromSuperview];
此代码工作正常.....
我不想在mainviewcontroller中创建子视图,所以我创建了一个新的UIView类,并将其命名为subView,现在我从mainviewcontroller中删除了所有subView声明,只是在mainviewcontroller中导入了subView类。并使用此[self.view addSubview:subView];
这件事不太好用。任何人都可以帮助我...我如何与UIViewcontroller交互一个单独的UIView类。更多的事情是UIView类有标签和文本框我可以设置从UIViewController到UIView标签和文本框的值......
有可能吗?
提前致谢.......抱歉我的英文不好
答案 0 :(得分:1)
你有一个名为Subview的子类,它被声明为UIView,即
@interface Subview : UIView {
UILabel *foo;
}
@property (nonatomic, retain) UILabel *foo;
@end
现在你想在主UIView中使用这个子类,你从一开始就拥有它。您需要做一些事情。
#import
您的标题文件中的子视图,并将其实例添加到您的班级。 #import "Subview.h"
和@interface
的{}内部,
Subview *mySubview;
在主视图控制器的viewDidLoad
类中,在底部附近添加如下内容:
mySubview = [[Subview alloc] init];
[self.view addSubview:mySubview];
[mySubview release];
第一行会为你分配一个新的“Subview”,第二行会将它添加到你的视图中,这样你就可以获得它所拥有的东西,第三行将释放它。可以在这里发布它,因为“self.view”现在将负责它,所以它不会消失。
最后,您需要在Subview的init方法中设置视图。在Subview.m中,执行以下操作:
- (id)init
{
if (self = [super init]) {
foo = [[UILabel alloc] init];
foo.text = @"Hello!";
[self addSubview:foo];
}
return self;
}
我认为应该照顾它。您还想在-dealloc
中为Subview发布foo,但您可能已经知道如何做这些。