如何在单个UIViewController中实现多个UIView类

时间:2010-08-23 06:42:04

标签: iphone

在我基于视图的应用程序中,我将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标签和文本框的值......

有可能吗?

提前致谢.......抱歉我的英文不好

1 个答案:

答案 0 :(得分:1)

你有一个名为Subview的子类,它被声明为UIView,即

@interface Subview : UIView {
    UILabel *foo;
}

@property (nonatomic, retain) UILabel *foo;

@end

现在你想在主UIView中使用这个子类,你从一开始就拥有它。您需要做一些事情。

  1. #import您的标题文件中的子视图,并将其实例添加到您的班级。
  2. #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,但您可能已经知道如何做这些。