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

Iphone 如何在单个UIViewController中实现多个UIView类,iphone,Iphone,在基于视图的应用程序中,我加载了一个视图作为mainview,另一个视图作为mainview的子视图。它工作得很好代码片段是 在mainviewcontroller中 IBOutlet UIView *subView; @property(nonatomic,retain) UIView *subView; @synthesize subView; [subView release]; //add subview [self.view addSubview:subView]; //remov

在基于视图的应用程序中,我加载了一个视图作为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中删除了所有子视图声明,只需在mainviewcontroller中导入子视图类。并使用此
[self.view addSubview:subView]

这东西不太管用。谁能帮我。。。我如何与UIViewcontroller交互一个单独的UIView类。还有一件事是UIView类有标签和文本框。我可以将UIViewcontroller中的值设置为UIView标签和文本框

可能吗


提前感谢……很抱歉我的英语不好

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

@interface Subview : UIView {
    UILabel *foo;
}

@property (nonatomic, retain) UILabel *foo;

@end
现在,您希望在主UIView中使用这个子类,从一开始就是这样。你需要做几件事

  • #导入头文件中的子视图,并将其实例添加到类中
  • #导入“Subview.h”

    在你的
    @界面的{}内

    Subview *mySubview;
    
    在主视图控制器的
    viewdiload
    类的底部,添加如下内容:

    mySubview = [[Subview alloc] init];
    
    [self.view addSubview:mySubview];
    
    [mySubview release];
    
    - (id)init
    {
        if (self = [super init]) {
            foo = [[UILabel alloc] init];
            foo.text = @"Hello!";
            [self addSubview:foo];
        }
        return self;
    }
    
    第一行将为您分配一个新的“子视图”,第二行将把它添加到您的视图中,这样您就可以得到它所拥有的内容,第三行将发布它。在这里发布它是可以的,因为“self.view”现在将负责它,所以它不会消失

    最后,需要在子视图的init方法中设置视图。在Subview.m中,执行以下操作:

    mySubview = [[Subview alloc] init];
    
    [self.view addSubview:mySubview];
    
    [mySubview release];
    
    - (id)init
    {
        if (self = [super init]) {
            foo = [[UILabel alloc] init];
            foo.text = @"Hello!";
            [self addSubview:foo];
        }
        return self;
    }
    

    我认为这应该解决它。您还想在子视图的
    -dealloc
    中发布foo,但您可能已经知道如何执行这些操作了。

    您能把您的代码放到问题中吗。。。不起作用的那一个是的,在viewDidLoad方法中,我添加了以下代码[self.view addSubview:subView];IBUIView*子视图@属性(非原子,保留)UIView*子视图@综合子视图;[子视图发布];在这些方法中,我在mainviewcontroller中创建一个子视图作为xib文件。因此,我们不需要分配和解除分配代码,只需将子视图作为uiview拖放即可。工作正常。主要是因为我想要分离uiview子类,这意味着在mainviewcontroller中使用了更多的标签和文本框,所以我想将这些变量从mainviewcontroller中分离出来,所以我想添加为分离的uiview子类。当你说要创建子类,然后谈论不是子类的子视图时,你把我弄糊涂了,只是一个普通的老景观。让我看看我是否明白了你的意思:你有一堆标签和文本框,你想通过添加独立的UIView子类从你的视图控制器中分离出来。。。?那没有道理。首先,子类化的原因是什么?对不起,我无法解释我到底想要什么。。谢谢你的重播。如果不是答案,请不要接受我的答案!:如果你试着用不同的方式解释你的问题,也许我或其他人会理解你的意思。我认为您误用了“subclass”一词——子类化意味着您创建了一个名为“mycokieview”的新的.m和.h文件,其中包含类似于@interface mycokieview:UIView的内容。这是你的意思吗?是的,你是对的。我创建了一个新的子类,名为Subview,它有两个文件Subview.h和Subview.m,还有@interface Subview:UIView。i、 e@interface子视图:UIView{IBOutlet UILabel*someLabel;IBOutlet UITextField*someTextField;}@property(非原子,保留)IBOutlet UILabel*someLabel@属性(非原子,保留)UITextField*someTextField@结束我想让这个子类与我的mainviewcontroller.m文件交互。例如#导入“Mainviewcontroller.h”#导入“SubView.h”子视图*view2;view2.someLabel.text=@“某些字符串”;