我正在开发一个具有多个视图的应用程序。我有一个我在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实例?
答案 0 :(得分:0)
(^。^)“对不起我的英语不好,如果有人喜欢纠正我的修改,我会很感激”
嗨首先我不建议使用NSNotification更喜欢使用这样的协议。
@protocol KeyBoardDelegate <NSObject>
- (void)KeyBoardVisible:(BOOL)op;
@end
如果你有多个视图,如果你现在想要这样的视图控件:
我建议像这样使用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.
}
还有一些方法。 :)