在多个视图控制器中重用从 nib 创建的 uiview

Posted

技术标签:

【中文标题】在多个视图控制器中重用从 nib 创建的 uiview【英文标题】:Reusing a uiview created from a nib in multiple viewcontrollers 【发布时间】:2011-01-11 12:20:28 【问题描述】:

好的,抱歉,简而言之:在多个视图控制器中重用从 nib 创建的视图的最佳/最简单/推荐的方法是什么?

【问题讨论】:

问题令人困惑,使其易于理解和回答 【参考方案1】:

使用NSBundle- (NSArray *)loadNibNamed:(NSString *)name owner:(id)owner options:(NSDictionary *)options 方法加载您的笔尖。

创建一个 nib 文件并将该文件的所有者设置为您的视图控制器之一。只要所有相关属性都存在于两者中,哪一个无关紧要。 设置笔尖,链接您的视图/按钮/等。到文件的所有者属性。

在您的视图控制器中执行以下操作

@interface MyViewController : UIViewController 


@property (retain, nonatomic) IBOutlet UIView *myView;
// Add whatever other outlets you need for your nib.

@end

@implementation MyViewController

@synthesize myView;

- (void)viewDidLoad 
    [super viewDidLoad];

    // You set up your other views/ivars/etc. here

    [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil];
    // Assuming that your bundle contains a single top-level object that is linked to the
    //  'myView' property in your view controller, everything should be properly retained


@end

【讨论】:

以上是关于在多个视图控制器中重用从 nib 创建的 uiview的主要内容,如果未能解决你的问题,请参考以下文章

从 NavigationController 以编程方式初始化可重用的表视图控制器

在单个视图控制器中使用多个 nib 文件?

从 NIB 加载的自定义视图始终旋转 90 度

从 Nib 加载 NSView 的多个实例

为 StoryBoard 中 ViewController 中使用的 UIView 加载 Nib

是否可以从加载到的视图中访问/操作 nib 文件中的约束?