使用xib元素构建“has many”的最佳方法是什么?

时间:2013-07-09 13:48:41

标签: ios cocoa-touch

我有一个UIViewController,里面有一个ScrollView,我有一个单独的UIView(没有连接到视图控制器),它有一个文本标签,而imageView--它的高度是200px。

基本上我想实例化一堆单独的UIViews,设置它们的文本标签和图像,然后将它们作为子视图添加到ScrollView。我不清楚设置它的最佳方法是什么..我的UIView应该是一个单独的UIViewController类,我应该将它们添加为子视图控制器吗?或者UIView类可以是.xib的文件所有者吗?

2 个答案:

答案 0 :(得分:0)

我假设您为视图创建了一个单独的类(带.h和.m文件),例如的 Someview

<强> Someview.h

@interface Someview : UIView

@property(strong) UITextField *field;

@end

<强> Someview.m

@interface Someview ()

@end

@implementation Navigator
@synthesize field;

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code

    }
    return self;
}

@end

如果要添加此视图的多个实例,只需将其实际添加到scrollview。

在主控制器中,您可以运行循环来创建许多 someView 实例并为它们设置位置。

要遵循的代码:

Someview *instance = [[Someview alloc] initWithFrame:yourFrame];
[scrollview addSubview:instance];

答案 1 :(得分:0)

你可以这样做,就像从UITableViews的xib文件创建自定义UITableViewCells一样。

xib文件仍然将FilesOwner设置为使用它的UIViewController,但顶级元素将是您创建和自定义的UIView的子类。

在你的UIViewController中,实例化xib文件(使用UINib),然后将其添加到你的UIScrollView。

编辑:更详细一点:

你有一个自定义视图MyView,它有一个xib文件,MyView.xib:

@interface MyView : UIView
    @property (strong, nonatomic) IBOutlet UILabel *myLabel;
@end

在xib文件中,顶级视图是MyView(使用cmd-alt-3)并将类从UIView更改为MyView。

文件所有者设置为MyViewController - 然后您可以将新的引用插座从MyView拖动到FilesOwner以将其链接起来。

在UIViewController中,您可以使用以下命令加载MyView.xib:

UINib *myViewNib = [UINib nibWithNibName:@"MyView" bundle:[NSBundle mainBundle]];
[myViewNib instantiateWithOwner:self options:nil];

它将填充UIViewController MyView属性:即

@interface MyViewController : UIViewController
    @property (strong, nonatomic) IBOutlet MyView *myView;
@end