我知道这是微不足道的,但我已经搞砸了,花了好几个小时。
我有一个UIViewController,它由CategoryTableview和ProductsTableView组成。
ProductsTableView正在创建名为ProductTableViewCell的自定义TableViewCell。
ProductTableViewCell具有标题标签,详细信息标签,价格标签和自定义步进器,用于控制从UIViewController继承子类的产品数量。
步进器由两个按钮和一个文本域组成。
我认为我实施该计划的方式比它应该更复杂。
我的问题是如何检测父视图控制器中步进控制器更改的值。
代码是:
ProductionViewController.h (parent view controller for listing everything)
@interface ProductionViewController ()<UITableViewDataSource, UITableViewDelegate>
@property (nonatomic,strong) UITableView* categoryTable;
@property (nonatomic,strong) UITableView* productsTable;
@property (nonatomic,strong) CheckOutBar* checkOutBar;
//datasources
@property (nonatomic,strong) NSMutableArray* menuLists;
@property (nonatomic,strong) NSMutableArray* detailLists;
//datefield
@property (nonatomic,strong) NSString* startDate;
@property (nonatomic,strong) NSString* endDate;
产品的定制单元格
@interface ProductCell : UITableViewCell
@property (nonatomic, strong) UIImageView* eqiupmentImage;
@property (nonatomic, strong) UILabel* Title;
@property (nonatomic, strong) UILabel* details;
@property (nonatomic, strong) UILabel* prices;
@property (nonatomic, strong) MCStepperViewController* stepper;
细胞的实施方法是
@implementation ProductCell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
{
_Title = [[UILabel alloc] init];
_eqiupmentImage = [[UIImageView alloc] init];
_details = [[UILabel alloc] init];
_details.font = kFONT(12);
_details.textColor = KColor_Gray;
_prices = [[UILabel alloc] init];
_stepper = [[MCStepperViewController alloc] init];
[self.contentView addSubview:_stepper.view];
[self.contentView addSubview:_Title];
[self.contentView addSubview:_eqiupmentImage];
[self.contentView addSubview:_details];
[self.contentView addSubview:_prices];
}
return self;
}
-(void)layoutSubviews
{
[super layoutSubviews];
[_eqiupmentImage setFrame:CGRectMake(kLeftMargin, kLeftMargin, 80 ,80)];
[_Title setFrame:CGRectMake(10+CGRectGetMaxX(_eqiupmentImage.frame), kLeftMargin/2, 60, 20)];
[_details setFrame:CGRectOffset(_Title.frame, 0, 20)];
[_prices setFrame:CGRectMake(10+CGRectGetMaxX(_eqiupmentImage.frame), CGRectGetMaxY(_eqiupmentImage.frame)-20, 40, 20)];
[_stepper.view setFrame:CGRectOffset(_prices.frame, 40, 0)];
}
自定义的stepperview是
MCStepperViewController.h (for controlling the amount of products)
@interface MCStepperViewController : UIViewController
@property (nonatomic, strong) UITextField *amountText;
@property (nonatomic, strong) UIButton * plusButton;
@property (nonatomic, strong) UIButton * minusButton;
@property (nonatomic, assign) int max;
@property (nonatomic, assign) int min;
@property (nonatomic, assign) int amount;
谢谢
答案 0 :(得分:0)
一种方法是使用类似- (void)productCell:(ProductCell *)cell didChangeStepperValue:(NSInteger)stepperValue
的方法在您的单元格中实现协议。然后,您将视图控制器作为每个单元格的委托,并在每次步进器更改其值时调用此方法。要将单元格彼此分开,您可以将tag
值分配给模型的相应索引。
另一种方法是使用KVO,但是你应该小心订阅/取消订阅。当然,使用块是一种可行的选择。