我正在制作一个应用程序来销售门票,有不同的门票类型,对于我想要的每种门票类型:
nameLabel UIStepper amountLabel priceLabel。
所以这4个视图*故障单类型..在运行时添加到viewcontroller。
我可以不在tableviewcontroller中执行此操作吗?
似乎无法在彼此之下动态添加它们,任何提示?
答案 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