如何在不同的类中创建一个界面(UIView)并添加到我的屏幕上

时间:2013-02-25 19:53:43

标签: iphone ios view uiview

我想用视图创建一个不同的类,并在屏幕上调用该类。 当我运行应用程序时,视图不会出现。如果我删除该结构并在主文件上创建按钮,它可以正常工作。当我把它放在另一个班级时,它不起作用。

MyView.h

#import <UIKit/UIKit.h>

@interface viewHome : UIViewController

-(UIView*) myHome;

@end

MyView.m(创建测试按钮)

#import "viewHome.h"

@implementation viewHome

-(UIView*) myHome {
    UIView * myScreen = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
    myScreen.backgroundColor = [UIColor whiteColor];

    UIButton * myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    myButton.frame = CGRectMake(100,100,100,44);
    [myButton setTitle:@"Login" forState:UIControlStateNormal];

    [myScreen addSubview:myButton];

    return myScreen;
}
@end

viewController.m [...]

- (void)viewDidLoad
{

    [super viewDidLoad];

    viewHome * fncScreen;
    UIView * homeScreen = [fncScreen myHome];
    [self.view addSubview:homeScreen];

}

由于

3 个答案:

答案 0 :(得分:0)

将一个viewController的视图作为子视图添加到另一个viewcontroller是一种不好的做法。 (除非您使用某些允许使用childViewControllers的类/方法)。

正是由于这个原因,您的视图不会出现在一个案例中,而是出现在另一个案例中。

尝试在viewController.m中添加-(UIView*) myHome方法,并执行

 [self.view addsubview: [self myHome]];

这是一篇关于嵌套UIViewControllers的好文章:

Is it wise to "nest" UIViewControllers inside other UIViewControllers like you would UIViews?

答案 1 :(得分:0)

我在代码中看到的一个明显错误就是这一行:

viewHome * fncScreen;

好的,这是一个指针声明,但你实际上并没有创建对象。 你需要这样的东西:

viewHome * fncScreen = [[viewHome alloc] init];

然后你可以在这样的初始化对象上调用方法。

答案 2 :(得分:0)

分配视图homeScreen后,可以调用方法[fncScreen myHome]。 像这样 -

UIView *homeScreen = [[UIView alloc] init];
homeScreen = [funScreen myHome];
[self.view addSubView: homeScreen];
[homeScreen release];

希望这会对你有所帮助。