从nib文件加载UIView的问题

时间:2012-04-23 03:12:07

标签: ios uiview uiscrollview xlib nsnotificationcenter

我正在开发一个具有多个视图的应用程序。我有一个我在xlib文件中创建的图库的模板。此视图将作为单个页面加载到滚动视图中。我可以使用以下内容从xlib多次加载视图:

- (void)registerForKeyboardNotifications
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWasShown:)
                                                 name:UIKeyboardDidShowNotification object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillBeHidden:)
                                                 name:UIKeyboardWillHideNotification object:nil];

}
- (id)initWithFrame:(CGRect)frame
{
    self = [[[NSBundle mainBundle] loadNibNamed:@"GSEstimateView" owner:self options:NULL] lastObject];
    self.commentText.delegate = self;
    self.scrollView.delegate = self;
    self.commentText.delegate =self;
    [self registerForKeyboardNotifications];
    return self;
}

我面临的第一个问题是,当显示键盘时,我已经为我创建的UIViews调用了KeyboardWasShown:方法。如果我尝试从第二个UIView加载键盘,我会因调用无效选择器而获得异常。 UIView是从nib还是xlib Singleton加载的?如果我从nib文件加载它,如何通知我的UIView实例?

1 个答案:

答案 0 :(得分:0)

(^。^)“对不起我的英语不好,如果有人喜欢纠正我的修改,我会很感激”

嗨首先我不建议使用NSNotification更喜欢使用这样的协议。

@protocol KeyBoardDelegate <NSObject>
- (void)KeyBoardVisible:(BOOL)op;
@end

如果你有多个视图,如果你现在想要这样的视图控件:

  • * viewDidLoad,viewDidUnload,viewWillDisappear,viewWillAppear和其他*

我建议像这样使用UIViewController的视图。

UIViewControllerCustom *example = [[UIViewControllerCustom alloc] initWithNibName:@"exampleNIB" bundle:[NSBundle mainBundle]];
[self.view addSubview:example.view];

使用此方法,您可以控制示例viewcontroller的视图并使用方法

- (void)viewDidLoad{
  [super viewDidLoad];
  //When the nib has been loaded.
}

- (void)viewWillAppear:(BOOL)animated{
  [super viewWillAppear:animated];
  //When the view is show.
}

- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
//The view is hidden
}

- (void)viewDidUnload{
[super viewDidUnload];
// Release any retained subviews of the main view.
}

还有一些方法。 :)