Я знаю, что это было тривиально, но я перепутал себя и провел много часов.UIViewController в настраиваемом UITableViewCell
У меня есть UIViewController, который состоит из CategoryTableview и ProductsTableView.
The ProductsTableView создает настраиваемый TableViewCell под названием ProductTableViewCell.
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;
Спасибо
Исследуйте концепцию наблюдения ключевых значений (KVO). Вы можете наблюдать значение переменной «сумма» в родительском контроллере представления. Каждый раз, когда значение изменяется, родитель получает уведомление, и вы можете назначить метод для вызова. – TheAppMentor
@ TheAppMentor Спасибо, потому что значение, которое я хочу наблюдать, является одним из свойств шагового контроллера, а шагомер является свойством ячейки. Я не уверен, что могу напрямую наблюдать за значением в основном родительском контроллере, или я должен добавить наблюдателя в настраиваемую ячейку? – Mix
@Mix Вы хотите получать уведомления каждый раз, когда изменение ценности? Или вы просто хотите проверить текущее значение для суммарной логики? – ibnetariq