如何在UIViewController上添加弹出UIView(自定义类)

时间:2012-06-23 15:04:10

标签: iphone uiview uiviewcontroller

我是新手,我想得到一些建议,因为我不知道我做错了什么。 我想在xcode中创建一个应用,其中UIView包含一些项目,当您执行某些操作时,会在第一个UIView上方弹出另一个UIView(小于第一个)。弹出窗口UIView将是一个自定义类。

我已经开始使用UIViewController模板和初始UIView,并且我已将.storyboard中的所有项目关联起来,并且它可以正常运行。但是,当我创建自己的UIView课程(from objective-C class)时,将第二个UIView放在storyboard中的第一个UIView并将其链接到我的班级,就会出错。

storyboard出现,但是当我尝试将其设置为隐藏时,它不会回答。这就像它没有收到消息一样,所以我认为我没有以编程方式很好地链接它,只是因为 #import <UIKit/UIKit.h> #import "EditView.h" @interface ReleaseViewController : UIViewController <UIWebViewDelegate, UISearchBarDelegate> { IBOutlet UIWebView *web; IBOutlet UISearchBar *search; IBOutlet EditView *evHack; } @property (nonatomic, retain) IBOutlet UIWebView *web; @property (nonatomic, retain) IBOutlet UISearchBar *search; @property (nonatomic, retain) IBOutlet EditView *evHack; @end - (void)viewDidLoad { [super viewDidLoad]; search.delegate = self; web.delegate = self; evHack = [evHack initWithFrame:CGRectMake(0, 44, 320, 377)]; [evHack setHidden:YES]; } 而出现。

我不知道是否必须创建另一个UIViewController而不是UIView,或者这是否是正确的路径。

任何人都可以解释一下,或者只是编写一个带有第二个视图实例化并添加它的小代码片段?

很多谢谢!!

(我在.h中粘贴声明的一些代码,在.m中实例化)

#import <UIKit/UIKit.h>

@interface EditView : UIView

@end



#import "EditView.h"

@implementation EditView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        NSLog(@"View created");
    }
    return self;
}

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    // Drawing code
}
*/

@end

EditView类(我还没有):

{{1}}

1 个答案:

答案 0 :(得分:0)

initWithFrame仅在您分配/初始化应用程序时有效。如果它已经初始化,在这种情况下由故事板,只需设置其框架:

evHack.frame = CGRectMake(0,44, 320, 377);

我不知道它在IB中的样子,但如果你在IB中设置它,那么在代码中设置它的框架可能是多余的。要检查evHack是否正确连接,请在viewDidLoad中使用NSLog evHack。如果你得到nil,那么它就没有正确连接。

相关问题