Iphone Objective-c-将对象从XIB文件获取到视图控制器
因此,我有一个Iphone Objective-c-将对象从XIB文件获取到视图控制器,iphone,objective-c,xib,viewcontroller,Iphone,Objective C,Xib,Viewcontroller,因此,我有一个XIB文件,其中包含一个视图。在该视图中,我希望添加自定义对象,然后能够获取这些对象,并在视图控制器中使用它们,在该视图控制器中,我以编程方式包装其他东西 我的XIB文件名为“myxibbrary.XIB” 我希望将对象添加到的视图控制器称为“ContactDetailsViewController” 正在从UITableViewController推送我的视图控制器,如下所示: ContactDetailsViewController *detailViewController
XIB
文件,其中包含一个视图。在该视图中,我希望添加自定义对象,然后能够获取这些对象,并在视图控制器中使用它们,在该视图控制器中,我以编程方式包装其他东西
我的XIB文件名为“myxibbrary.XIB”
我希望将对象添加到的视图控制器称为“ContactDetailsViewController”
正在从UITableViewController
推送我的视图控制器,如下所示:
ContactDetailsViewController *detailViewController = [[ContactDetailsViewController alloc] init];
在我的联系人详细信息查看控制器视图中将出现我有以下代码来获取XIB对象:
UIView *xibView = [[[NSBundle mainBundle] loadNibNamed:@"MyLib" owner:self options:nil] objectAtIndex:0];
[self.view addSubview:xibView];
例如,loadNibNamed
属性应该是?XIB文件的名称?该XIB文件中的视图的名称?还是什么
所有这些都给我带来了错误和应用程序trows exeption
我不知道如何使用XIB文件,因为我对Objective-c
编码非常陌生
任何帮助都将不胜感激!!!
谢谢 如果您查看,有一个名为initWithNibName:bundle:
的方法。它列出了苹果为演示如何使用xib文件和视图控制器而提供的五个不同的示例代码项目。您应该阅读其中一些内容以获得基本理解。如果您想从NIB加载UIView
,此代码将更正确(因为您不知道xib文件中所需对象的索引)
-(id)loadViewFromNIB:(NSString*)nibName所有者:(id)所有者类:(class)\u类
{
NSArray*objects=[[NSBundle mainBundle]loadNibNamed:nibName所有者:所有者选项:nil];
for(对象中的id对象){
if([对象是类的种类:\u类]){
返回对象;
}
}
}
在interface builder中打开MyLib.xib,检查该文件中是否有UIView组件
您从异常中得到了什么错误消息?被称为NIB的XIB(作为历史事项)定义了至少一个要由视图控制器“控制”的视图。此视图可以表示整个用户界面,也可以仅表示另一个视图的子视图(例如,您的XIB可以表示可重用的表行)。因此,您不应该以您描述的方式使用XIB作为预构建接口元素的容器
但是,只要控制器知道XIB的组件,就可以轻松地使用这些组件。也就是说,XIB的元素应该连接到视图控制器类的属性
例如,假设您具有以下视图控制器界面:
#import <UIKit/UIKit.h>
interface MyViewController : UIViewController {
}
@property (strong, nonatomic) IBOutlet UITextView *textEntry;
@property (strong, nonatomic) IBOutlet UIButton *enterButton;
调用此方法时,将创建MyViewController
的实例,该实例将自动从NIB加载存储的对象,并将它们绑定到视图控制器对象的属性。然后,它将检索按钮标签的文本并将其写入日志控制台。Wow感谢您的精彩解释并花时间这么做=)
- (void)aMethodOfSomeOtherController
{
MyViewController *myView = [[MyViewController alloc]
initWithNibName:@"MyViewController"
bundle:nibBundleOrNil];
NSString *buttonLabelText = [[[myView] enterButton] titleLabel] text];
NSLog(@"Button label text = %@", buttonLabelText);
[myView release];
}