我需要一个如何从nib文件实例化自定义视图的示例。我把头缠在几个stackoverflow帖子上,但我不明白。也许我只需要提示如何做。

我要做的是-使用界面生成器创建自定义视图。它应该是一个模板,以便我可以实例化它多次以将其添加到多个视图控制器。

到目前为止,我已经创建了名为MyIssueView.xib的自定义视图xib文件。实际上,它仅由主视图和一些标签组成。

然后,我在MyIssueView.xib中创建了一个名为IssueView的UIView子类,其中的Outlet是我的标签的标签。

我现在如何与IB挂钩呢?以及如何从任何ViewController实例化IssueView?

举个例子很高兴!
干杯。

更新:

我现在有

IssueView.xib
IssueView.h(UIView子类)
IssueView.m

我的IssueView.h:

#import <UIKit/UIKit.h>

@interface IssueView : UIView

@property (weak, nonatomic) IBOutlet UILabel *label1;
@property (weak, nonatomic) IBOutlet UILabel *label2;
@property (weak, nonatomic) IBOutlet UILabel *label3;
@property (weak, nonatomic) IBOutlet UILabel *label4;

@end

我的IssueView.m:
#import "IssueView.h"

@implementation IssueView
@end

我的ViewController.m:
#import "AllIssuesViewController1.h"
#import "IssueView.h"
#import "UIView+NibLoading.h"

@interface AllIssuesViewController1 ()

@end

@implementation AllIssuesViewController1


- (void) loadView
{

}

- (void)viewDidLoad
{
    [super viewDidLoad];

    _issueView = [IssueView loadInstanceFromNib];
}

它给我一个错误:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x8292580> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key label1.'

最佳答案

我有一个扩展UIView的类别,称为UIView + NibLoading。

这是这段代码...

#import "UIView+NibLoading.h"

@implementation UIView (NibLoading)

+ (id)loadInstanceFromNib
{
    UIView *result;

    NSArray* elements = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:nil options:nil];

    for (id anObject in elements) {
        if ([anObject isKindOfClass:[self class]]) {
            result = anObject;
            break;
        }
    }

    return result;
}

@end

然后,当我想从笔尖实例化UIView子类时,只需导入类别即可运行...
self.issueView = [IssueView loadInstanceFromNib];\

您需要像这样连接标签...

如果将标签连接到“文件的所有者”,则需要删除这些连接。

关于ios - iOS从多个UIViewController的Nib文件实例化自定义 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13560671/

10-11 22:34