1

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

我的视图.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

视图控制器.m [...]

- (void)viewDidLoad
{

    [super viewDidLoad];

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

}

谢谢

4

3 回答 3

0

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

viewHome * fncScreen;

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

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

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

于 2013-02-25T21:08:05.263 回答
0

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

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

希望这会帮助你。

于 2013-02-26T04:25:52.143 回答
0

将一个视图控制器的视图作为子视图添加到另一个视图控制器是一种不好的做法。(除非您使用某些类/方法让您拥有 childViewControllers)。

正是出于这个原因,您的视图不会出现在一种情况下,而是出现在另一种情况下。

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

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

这是一篇关于嵌套 UIViewControllers 的好帖子:

像 UIViews 一样在其他 UIViewControllers 中“嵌套”UIViewControllers 是否明智?

于 2013-02-25T20:07:53.110 回答