如何根据数组大小添加多个视图?

时间:2014-06-03 12:54:45

标签: ios views uistepper

我正在制作一个应用程序来销售门票,有不同的门票类型,对于我想要的每种门票类型:

nameLabel UIStepper amountLabel priceLabel。

所以这4个视图*故障单类型..在运行时添加到viewcontroller。

我可以不在tableviewcontroller中执行此操作吗?

似乎无法在彼此之下动态添加它们,任何提示?

2 个答案:

答案 0 :(得分:1)

我假设您的票是UITableViewCell,因为您提到“tableviewcontroller”。 如果是这种情况,你应该创建一个UITableViewCell的子类,并将这4个视图添加到子类单元格。

这样你的子类化单元格标题看起来像:

#Import <UIKit/UIKit.h>

@interface TicketCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@property (weak, nonatomic) IBOutlet UIStepper *stepper;
@property (weak, nonatomic) IBOutlet UILabel *ammountLabel;
@property (weak, nonatomic) IBOutlet UILabel *priceLabel;
@end

然后,您应该在Interface Builder中将此类设置为UITableViews原型单元类,然后将UILabel和UIStepper拖放到原型单元格中。之后,您需要将插座连接到正确的UILabels和UIStepper。

在您的uitableviewcontroller中,您希望重用此原型

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellId= @"PrototypeCellStoryboardIdentifier";

    TicketCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];

    if (cell == nil) {
        cell = [[TicketCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellId];
    }
    return cell;
}

最后你要将表中的行数设置为“number-of-ticket-types-array”中的对象数,如下所示:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [ticketTypes count];
}

答案 1 :(得分:0)

如果您不想使用tableview,可以使用UIScollView执行此操作,如下所示

import "ViewController.h"

@interface ViewController ()
{
    float y;

}
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

- (IBAction)newTicket:(UIButton *)sender;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    y=50.0;


}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)newTicket:(UIButton *)sender
{


    UILabel * nameLabel = [[UILabel alloc]initWithFrame:CGRectMake(10.0,y,50, 30)];
    UILabel * priceLabel = [[UILabel alloc]initWithFrame:CGRectMake(10.0,y+32, 50, 30)];
    UILabel * amountLabel = [[UILabel alloc]initWithFrame:CGRectMake(10.0,y+64, 50, 30)];
    UIStepper * stepper = [[UIStepper alloc]initWithFrame:CGRectMake(10.0,y+96,50,30)];

    nameLabel.text = @"name";
    priceLabel.text = @"price";
    amountLabel.text = @"amount";

    [self.scrollView addSubview:nameLabel];
    [self.scrollView addSubview:priceLabel];
    [self.scrollView addSubview:amountLabel];
    [self.scrollView addSubview:stepper];

    y = y +130.0;

    if (y>=self.view.frame.size.height)
    {

        self.scrollView.contentSize =CGSizeMake(320.0, y+120.0);
    }
}
@end