ohh*_*hho 6 cocoa-touch objective-c uiviewcontroller ios
我有一个子类UIViewController:
@interface KBViewController : UIViewController
Run Code Online (Sandbox Code Playgroud)
xib例如,有多个s,一个是a Qwerty,另一个是Dvorak布局:
KBViewControllerQuerty~iphone.xib
KBViewControllerDvorak~iphone.xib
Run Code Online (Sandbox Code Playgroud)
因此,当用户单击按钮时,Qwerty切换到Dvorak.如您所见,两种键盘布局的代码逻辑都是相同的.我需要的是重新加载view另一个xib.
希望,所有按钮Dvorak xib都将挂钩到响应IBOutlet中KBViewController.
在两者之间切换的正确方法xib是什么?
所有Nib都有指定的File's Owner.IBOutlet和IBAction链接基于File's Owner.因此,您可以定义一个视图控制器和两个Nib,每个Nib文件都File's Owner设置为定义的视图控制器.
也就是说,如果你将File's Owner所有KBViewController*.xib文件设置为KBViewController并在某处有一个KBViewController对象,你可以通过initWithNibNamed方法加载你想要的KBViewController*.xib (重新创建视图控制器)
如果你应该一直保持相同的KBViewController对象,你可以创建一个没有Nib的KBViewController对象.在KBViewController.m中,loadView使用-[NSBundle loadNibNamed]方法实现并手动加载UIView对象(以编程方式加载和更改self.view).
UIView *someView = [[[NSBundle mainBundle] loadNibNamed:@"SomeNibFile"
owner:self
options:nil] objectAtIndex:0];
self.view = someView;
Run Code Online (Sandbox Code Playgroud)
请注意owner:self上面的代码.它必须与File's Owner@"SomeNibFile" 匹配.
要更改已加载的视图:
id superview = self.view.superview;
[self.view removeFromSuperview];
UIView *someView = [[[NSBundle mainBundle] loadNibNamed:@"SomeNibFile"
owner:self
options:nil] objectAtIndex:0];
self.view = someView;
[superview addSubview:self.view];
Run Code Online (Sandbox Code Playgroud)
更详细的说明: 资源编程指南 - 以编程方式加载Nib文件
| 归档时间: |
|
| 查看次数: |
2769 次 |
| 最近记录: |