【问题标题】:How to add a popup UIView (of a customized class) on a UIViewController如何在 UIViewController 上添加弹出 UIView(自定义类)
【发布时间】:2012-06-23 15:04:10
【问题描述】:

我是这方面的新手,我想得到一些建议,因为我不知道我做错了什么。 我想在 xcode 中制作一个应用程序,带有带有一些项目的UIView,当你做某事时,另一个UIView(比第一个小)会在第一个UIView 上方弹出。弹出窗口UIView 将是一个自定义类。

我从UIViewController 模板和初始UIView 开始,我已经链接了.storyboard 中的所有项目,并且它可以工作。但是当我创建自己的UIView(from objective-C class) 时,将第二个UIView 放在storyboard 中的第一个之上并将其链接到我的类时,出现了问题。

UIView 出现了,但是当我尝试将其设置为隐藏时,它没有响应。好像它没有收到消息,所以我认为我没有以编程方式很好地链接它,只是因为storyboard 而出现。

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

谁能给我解释一下,或者只是写一点代码 sn-p 与第二个视图的实例化并添加它?

非常感谢!!

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

     #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]; 

}

EditView 类(我还是什么都没有):

#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

【问题讨论】:

  • 查看代码会很有帮助,否则它可能会导致它无法正常工作的多种原因中的任何一种。
  • 完成 :) 我已将所有内容都链接到情节提要中。

标签: iphone uiview uiviewcontroller


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢!!我认为在情节提要中设置它会分配它,但我认为我还必须初始化它。我删除了初始化行并且工作正常:) 但是如果我在情节提要中设置它时无法初始化,我该如何初始化构造函数中的参数?还是我必须为它创建一个正常的功能?
  • 在这种情况下,您不能真正使用指定的初始化程序。但是,通常您可以通过在初始化后向其发送消息来设置您使用指定初始化程序设置的任何属性。您是想做具体的事情,还是只是一个笼统的问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-14
  • 2014-02-17
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多