diff --git a/RETableViewManager/Cells/RETableViewBoolCell.m b/RETableViewManager/Cells/RETableViewBoolCell.m index c554c4a..6316204 100644 --- a/RETableViewManager/Cells/RETableViewBoolCell.m +++ b/RETableViewManager/Cells/RETableViewBoolCell.m @@ -26,6 +26,12 @@ #import "RETableViewBoolCell.h" #import "RETableViewManager.h" +@interface RETableViewBoolCell () + +@property (strong, readwrite, nonatomic) UISwitch *switchView; + +@end + @implementation RETableViewBoolCell #pragma mark - @@ -36,10 +42,10 @@ [super cellDidLoad]; self.selectionStyle = UITableViewCellSelectionStyleNone; - _switchView = [[UISwitch alloc] init]; - _switchView.translatesAutoresizingMaskIntoConstraints = NO; - [_switchView addTarget:self action:@selector(switchValueDidChange:) forControlEvents:UIControlEventValueChanged]; - [self.contentView addSubview:_switchView]; + self.switchView = [[UISwitch alloc] init]; + self.switchView.translatesAutoresizingMaskIntoConstraints = NO; + [self.switchView addTarget:self action:@selector(switchValueDidChange:) forControlEvents:UIControlEventValueChanged]; + [self.contentView addSubview:self.switchView]; } - (void)cellWillAppear @@ -47,18 +53,19 @@ [self.contentView removeConstraints:self.contentView.constraints]; CGFloat margin = (REUIKitIsFlatMode() && self.section.style.contentViewMargin <= 0) ? 15.0 : 10.0; NSDictionary *metrics = @{@"margin": @(margin)}; - [self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:_switchView + [self.contentView addConstraint:[NSLayoutConstraint constraintWithItem:self.switchView attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0]]; - [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[_switchView]-margin-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_switchView)]]; + UISwitch *switchView = self.switchView; + [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[switchView]-margin-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(switchView)]]; self.textLabel.backgroundColor = [UIColor clearColor]; self.textLabel.text = self.item.title; - _switchView.on = self.item.value; + self.switchView.on = self.item.value; } - (void)layoutSubviews diff --git a/RETableViewManager/Cells/RETableViewCreditCardCell.m b/RETableViewManager/Cells/RETableViewCreditCardCell.m index b7e4b6a..3d14b46 100644 --- a/RETableViewManager/Cells/RETableViewCreditCardCell.m +++ b/RETableViewManager/Cells/RETableViewCreditCardCell.m @@ -26,6 +26,20 @@ #import "RETableViewCreditCardCell.h" #import "RETableViewManager.h" +@interface RETableViewCreditCardCell () + +@property (strong, readwrite, nonatomic) UIView *wrapperView; +@property (strong, readwrite, nonatomic) UIView *creditCardImageViewContainer; +@property (strong, readwrite, nonatomic) UIImageView *currentImageView; +@property (strong, readwrite, nonatomic) UIImageView *creditCardBackImageView; +@property (strong, readwrite, nonatomic) UIImageView *creditCardImageView; +@property (strong, readwrite, nonatomic) UIImageView *creditCardStackImageView; +@property (strong, readwrite, nonatomic) REFormattedNumberField *creditCardField; +@property (strong, readwrite, nonatomic) REFormattedNumberField *expirationDateField; +@property (strong, readwrite, nonatomic) REFormattedNumberField *cvvField; + +@end + @implementation RETableViewCreditCardCell static inline NSString * RECreditCardType(NSString *creditCardNumber) @@ -60,57 +74,57 @@ static inline NSString * RECreditCardType(NSString *creditCardNumber) self.selectionStyle = UITableViewCellSelectionStyleNone; self.textLabel.backgroundColor = [UIColor clearColor]; - _creditCardImageViewContainer = [[UIView alloc] init]; - [self.contentView addSubview:_creditCardImageViewContainer]; + self.creditCardImageViewContainer = [[UIView alloc] init]; + [self.contentView addSubview:self.creditCardImageViewContainer]; - _creditCardStackImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)]; - _creditCardStackImageView.image = [UIImage imageNamed:@"RETableViewManager.bundle/Card_Stack"]; - _creditCardStackImageView.tag = 0; - _currentImageView = _creditCardStackImageView; - [_creditCardImageViewContainer addSubview:_creditCardStackImageView]; + self.creditCardStackImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)]; + self.creditCardStackImageView.image = [UIImage imageNamed:@"RETableViewManager.bundle/Card_Stack"]; + self.creditCardStackImageView.tag = 0; + self.currentImageView = self.creditCardStackImageView; + [self.creditCardImageViewContainer addSubview:self.creditCardStackImageView]; - _creditCardImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)]; - _creditCardImageView.image = [UIImage imageNamed:@"RETableViewManager.bundle/Card_Visa"]; - _creditCardImageView.tag = 1; + self.creditCardImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)]; + self.creditCardImageView.image = [UIImage imageNamed:@"RETableViewManager.bundle/Card_Visa"]; + self.creditCardImageView.tag = 1; - _creditCardBackImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)]; - _creditCardBackImageView.image = [UIImage imageNamed:@"RETableViewManager.bundle/Card_Back"]; - _creditCardBackImageView.tag = 2; + self.creditCardBackImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)]; + self.creditCardBackImageView.image = [UIImage imageNamed:@"RETableViewManager.bundle/Card_Back"]; + self.creditCardBackImageView.tag = 2; - _wrapperView = [[UIView alloc] initWithFrame:CGRectMake(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone ? 60 : 60 + _textFieldPositionOffset.width, _textFieldPositionOffset.height, self.frame.size.width - 70, self.frame.size.height)]; - _wrapperView.clipsToBounds = YES; - [self.contentView addSubview:_wrapperView]; + self.wrapperView = [[UIView alloc] initWithFrame:CGRectMake(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone ? 60 : 60 + self.textFieldPositionOffset.width, self.textFieldPositionOffset.height, self.frame.size.width - 70, self.frame.size.height)]; + self.wrapperView.clipsToBounds = YES; + [self.contentView addSubview:self.wrapperView]; - _creditCardField = [[REFormattedNumberField alloc] initWithFrame:CGRectMake(0, 0, 216, self.frame.size.height - _textFieldPositionOffset.height)]; - _creditCardField.tag = 0; - _creditCardField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; - _creditCardField.inputAccessoryView = self.actionBar; - _creditCardField.delegate = self; - _creditCardField.placeholder = @"1234 1234 1234 1234"; - _creditCardField.format = @"XXXX XXXX XXXX XXXX"; - [_creditCardField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; - [_wrapperView addSubview:_creditCardField]; + self.creditCardField = [[REFormattedNumberField alloc] initWithFrame:CGRectMake(0, 0, 216, self.frame.size.height - self.textFieldPositionOffset.height)]; + self.creditCardField.tag = 0; + self.creditCardField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; + self.creditCardField.inputAccessoryView = self.actionBar; + self.creditCardField.delegate = self; + self.creditCardField.placeholder = @"1234 1234 1234 1234"; + self.creditCardField.format = @"XXXX XXXX XXXX XXXX"; + [self.creditCardField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; + [self.wrapperView addSubview:self.creditCardField]; - _expirationDateField = [[REFormattedNumberField alloc] initWithFrame:CGRectMake(320, 0, 80, self.frame.size.height)]; - _expirationDateField.tag = 1; - _expirationDateField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; - _expirationDateField.inputAccessoryView = self.actionBar; - _expirationDateField.format = @"XX/XX"; - _expirationDateField.placeholder = @"MM/YY"; - _expirationDateField.delegate = self; - [_expirationDateField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; - [_wrapperView addSubview:_expirationDateField]; + self.expirationDateField = [[REFormattedNumberField alloc] initWithFrame:CGRectMake(320, 0, 80, self.frame.size.height)]; + self.expirationDateField.tag = 1; + self.expirationDateField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; + self.expirationDateField.inputAccessoryView = self.actionBar; + self.expirationDateField.format = @"XX/XX"; + self.expirationDateField.placeholder = @"MM/YY"; + self.expirationDateField.delegate = self; + [self.expirationDateField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; + [self.wrapperView addSubview:self.expirationDateField]; - _cvvField = [[REFormattedNumberField alloc] initWithFrame:CGRectMake(320, 0, 60, self.frame.size.height)]; - _cvvField.tag = 2; - _cvvField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; - _cvvField.inputAccessoryView = self.actionBar; - _cvvField.format = @"XXX"; - _cvvField.placeholder = @"CVV"; - _cvvField.delegate = self; - [_cvvField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; - [_wrapperView addSubview:_cvvField]; + self.cvvField = [[REFormattedNumberField alloc] initWithFrame:CGRectMake(320, 0, 60, self.frame.size.height)]; + self.cvvField.tag = 2; + self.cvvField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; + self.cvvField.inputAccessoryView = self.actionBar; + self.cvvField.format = @"XXX"; + self.cvvField.placeholder = @"CVV"; + self.cvvField.delegate = self; + [self.cvvField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; + [self.wrapperView addSubview:self.cvvField]; } - (void)cellWillAppear @@ -119,45 +133,45 @@ static inline NSString * RECreditCardType(NSString *creditCardNumber) if (REUIKitIsFlatMode() && self.section.style.contentViewMargin <= 0) cellOffset += 5.0; - _creditCardImageViewContainer.frame = CGRectMake(cellOffset, 5, 32, 32); + self.creditCardImageViewContainer.frame = CGRectMake(cellOffset, 5, 32, 32); self.textLabel.text = self.item.title; - _creditCardField.text = self.item.number; - _creditCardField.font = [UIFont systemFontOfSize:17]; - _creditCardField.keyboardAppearance = self.item.keyboardAppearance; + self.creditCardField.text = self.item.number; + self.creditCardField.font = [UIFont systemFontOfSize:17]; + self.creditCardField.keyboardAppearance = self.item.keyboardAppearance; - _expirationDateField.text = self.item.expirationDate; - _expirationDateField.font = [UIFont systemFontOfSize:17]; - _expirationDateField.keyboardAppearance = self.item.keyboardAppearance; + self.expirationDateField.text = self.item.expirationDate; + self.expirationDateField.font = [UIFont systemFontOfSize:17]; + self.expirationDateField.keyboardAppearance = self.item.keyboardAppearance; - _cvvField.text = self.item.cvv; - _cvvField.font = [UIFont systemFontOfSize:17]; - _cvvField.keyboardAppearance = self.item.keyboardAppearance; + self.cvvField.text = self.item.cvv; + self.cvvField.font = [UIFont systemFontOfSize:17]; + self.cvvField.keyboardAppearance = self.item.keyboardAppearance; } - (void)layoutSubviews { [super layoutSubviews]; - [_creditCardField sizeToFit]; - [_expirationDateField sizeToFit]; - [_cvvField sizeToFit]; + [self.creditCardField sizeToFit]; + [self.expirationDateField sizeToFit]; + [self.cvvField sizeToFit]; - CGRect frame = _creditCardField.frame; + CGRect frame = self.creditCardField.frame; frame.size.width += UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone ? 30 : 50; frame.size.height = self.contentView.frame.size.height; - _creditCardField.frame = frame; + self.creditCardField.frame = frame; - frame = _expirationDateField.frame; + frame = self.expirationDateField.frame; frame.size.width += UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone ? 30 : 50; frame.size.height = self.contentView.frame.size.height; - _expirationDateField.frame = frame; + self.expirationDateField.frame = frame; - frame = _cvvField.frame; + frame = self.cvvField.frame; frame.size.width += UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone ? 30 : 50; frame.size.height = self.contentView.frame.size.height; - _cvvField.frame = frame; + self.cvvField.frame = frame; if ([self.tableViewManager.delegate respondsToSelector:@selector(tableView:willLayoutCellSubviews:forRowAtIndexPath:)]) [self.tableViewManager.delegate tableView:self.tableViewManager.tableView willLayoutCellSubviews:self forRowAtIndexPath:[(UITableView *)self.superview indexPathForCell:self]]; @@ -167,19 +181,19 @@ static inline NSString * RECreditCardType(NSString *creditCardNumber) { [super setSelected:selected animated:animated]; if (selected) { - [_creditCardField becomeFirstResponder]; + [self.creditCardField becomeFirstResponder]; } } - (UIResponder *)responder { - return _creditCardField; + return self.creditCardField; } - (void)flipCreditCardImageViewBack:(UITextField *)textField { - if ((textField.tag == 1 || textField.tag == 2) && !_cvvField.isFirstResponder) { - [UIView transitionFromView:_creditCardBackImageView toView:_currentImageView duration:0.4 options:UIViewAnimationOptionTransitionFlipFromRight completion:nil]; + if ((textField.tag == 1 || textField.tag == 2) && !self.cvvField.isFirstResponder) { + [UIView transitionFromView:self.creditCardBackImageView toView:self.currentImageView duration:0.4 options:UIViewAnimationOptionTransitionFlipFromRight completion:nil]; } } @@ -195,44 +209,41 @@ static inline NSString * RECreditCardType(NSString *creditCardNumber) NSString *issuer = RECreditCardType(self.item.number); if (issuer) { - _creditCardImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"RETableViewManager.bundle/Card_%@", issuer]]; - [UIView transitionFromView:_creditCardStackImageView toView:_creditCardImageView duration:0.4 options:UIViewAnimationOptionTransitionFlipFromLeft completion:nil]; - _currentImageView = _creditCardImageView; + self.creditCardImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"RETableViewManager.bundle/Card_%@", issuer]]; + [UIView transitionFromView:self.creditCardStackImageView toView:self.creditCardImageView duration:0.4 options:UIViewAnimationOptionTransitionFlipFromLeft completion:nil]; + self.currentImageView = self.creditCardImageView; } else { - if (_currentImageView != _creditCardStackImageView) { - [UIView transitionFromView:_creditCardImageView toView:_creditCardStackImageView duration:0.4 options:UIViewAnimationOptionTransitionFlipFromRight completion:nil]; - _currentImageView = _creditCardStackImageView; + if (self.currentImageView != self.creditCardStackImageView) { + [UIView transitionFromView:self.creditCardImageView toView:self.creditCardStackImageView duration:0.4 options:UIViewAnimationOptionTransitionFlipFromRight completion:nil]; + self.currentImageView = self.creditCardStackImageView; } } BOOL isAmex = [issuer isEqualToString:@"Amex"]; if (textField.tag == 0 && textField.text.length == (isAmex ? 18 : 19) ) { - [_expirationDateField becomeFirstResponder]; - __typeof(&*self) __weak weakSelf = self; + [self.expirationDateField becomeFirstResponder]; [UIView animateWithDuration:0.1 animations:^{ - NSString *substring = [textField.text substringToIndex:textField.text.length - (isAmex ? 3 : 4)]; CGSize size = [substring sizeWithFont:textField.font]; - weakSelf.creditCardField.frame = CGRectMake(-size.width, weakSelf.creditCardField.frame.origin.y, weakSelf.creditCardField.frame.size.width, weakSelf.creditCardField.frame.size.height); - weakSelf.expirationDateField.frame = CGRectMake(CGRectGetMaxX(_creditCardField.frame), weakSelf.expirationDateField.frame.origin.y, weakSelf.expirationDateField.frame.size.width, weakSelf.expirationDateField.frame.size.height); - weakSelf.cvvField.frame = CGRectMake(CGRectGetMaxX(_expirationDateField.frame), weakSelf.cvvField.frame.origin.y, weakSelf.cvvField.frame.size.width, weakSelf.cvvField.frame.size.height); + self.creditCardField.frame = CGRectMake(-size.width, self.creditCardField.frame.origin.y, self.creditCardField.frame.size.width, self.creditCardField.frame.size.height); + self.expirationDateField.frame = CGRectMake(CGRectGetMaxX(self.creditCardField.frame), self.expirationDateField.frame.origin.y, self.expirationDateField.frame.size.width, self.expirationDateField.frame.size.height); + self.cvvField.frame = CGRectMake(CGRectGetMaxX(self.expirationDateField.frame), self.cvvField.frame.origin.y, self.cvvField.frame.size.width, self.cvvField.frame.size.height); }]; } if (textField.tag == 0 && textField.text.length == (isAmex ? 17 : 18)) { if (textField.tag == 0) { - __typeof(&*self) __weak weakSelf = self; [UIView animateWithDuration:0.1 animations:^{ - weakSelf.creditCardField.frame = CGRectMake(0, weakSelf.creditCardField.frame.origin.y, weakSelf.creditCardField.frame.size.width, weakSelf.creditCardField.frame.size.height); - weakSelf.expirationDateField.frame = CGRectMake(320, weakSelf.expirationDateField.frame.origin.y, weakSelf.expirationDateField.frame.size.width, weakSelf.expirationDateField.frame.size.height); - weakSelf.cvvField.frame = CGRectMake(320, weakSelf.cvvField.frame.origin.y, weakSelf.cvvField.frame.size.width, weakSelf.cvvField.frame.size.height); + self.creditCardField.frame = CGRectMake(0, self.creditCardField.frame.origin.y, self.creditCardField.frame.size.width, self.creditCardField.frame.size.height); + self.expirationDateField.frame = CGRectMake(320, self.expirationDateField.frame.origin.y, self.expirationDateField.frame.size.width, self.expirationDateField.frame.size.height); + self.cvvField.frame = CGRectMake(320, self.cvvField.frame.origin.y, self.cvvField.frame.size.width, self.cvvField.frame.size.height); }]; } } if (textField.tag == 1 && textField.text.length == 5) { - [_cvvField becomeFirstResponder]; + [self.cvvField becomeFirstResponder]; } } @@ -243,10 +254,10 @@ static inline NSString * RECreditCardType(NSString *creditCardNumber) { [self updateActionBarNavigationControl]; if (textField.tag == 0) { - [UIView transitionFromView:_creditCardBackImageView toView:_currentImageView duration:0.4 options:UIViewAnimationOptionTransitionFlipFromRight completion:nil]; + [UIView transitionFromView:self.creditCardBackImageView toView:self.currentImageView duration:0.4 options:UIViewAnimationOptionTransitionFlipFromRight completion:nil]; } if (textField.tag == 2) { - [UIView transitionFromView:_currentImageView toView:_creditCardBackImageView duration:0.4 options:UIViewAnimationOptionTransitionFlipFromLeft completion:nil]; + [UIView transitionFromView:self.currentImageView toView:self.creditCardBackImageView duration:0.4 options:UIViewAnimationOptionTransitionFlipFromLeft completion:nil]; } return YES; } diff --git a/RETableViewManager/Cells/RETableViewDateTimeCell.h b/RETableViewManager/Cells/RETableViewDateTimeCell.h index 0a81b74..a38f945 100644 --- a/RETableViewManager/Cells/RETableViewDateTimeCell.h +++ b/RETableViewManager/Cells/RETableViewDateTimeCell.h @@ -28,11 +28,10 @@ @interface RETableViewDateTimeCell : RETableViewCell -@property (strong, readwrite, nonatomic) UITextField *textField; -@property (strong, readwrite, nonatomic) UILabel *dateLabel; -@property (strong, readwrite, nonatomic) UILabel *placeholderLabel; +@property (strong, readonly, nonatomic) UITextField *textField; +@property (strong, readonly, nonatomic) UILabel *dateLabel; +@property (strong, readonly, nonatomic) UILabel *placeholderLabel; @property (strong, readonly, nonatomic) UIDatePicker *datePicker; -@property (strong, readonly, nonatomic) NSDateFormatter *dateFormatter; @property (strong, readwrite, nonatomic) REDateTimeItem *item; @end diff --git a/RETableViewManager/Cells/RETableViewDateTimeCell.m b/RETableViewManager/Cells/RETableViewDateTimeCell.m index 86e6652..6ff2b72 100644 --- a/RETableViewManager/Cells/RETableViewDateTimeCell.m +++ b/RETableViewManager/Cells/RETableViewDateTimeCell.m @@ -25,6 +25,16 @@ #import "RETableViewDateTimeCell.h" #import "RETableViewManager.h" +@interface RETableViewDateTimeCell () + +@property (strong, readwrite, nonatomic) UITextField *textField; +@property (strong, readwrite, nonatomic) UILabel *dateLabel; +@property (strong, readwrite, nonatomic) UILabel *placeholderLabel; +@property (strong, readwrite, nonatomic) UIDatePicker *datePicker; +@property (strong, readwrite, nonatomic) NSDateFormatter *dateFormatter; + +@end + @implementation RETableViewDateTimeCell + (BOOL)canFocusWithItem:(RETableViewItem *)item @@ -40,50 +50,50 @@ [super cellDidLoad]; self.textLabel.backgroundColor = [UIColor clearColor]; - _textField = [[UITextField alloc] initWithFrame:CGRectNull]; - _textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; - _textField.inputAccessoryView = self.actionBar; - _textField.delegate = self; - [self addSubview:_textField]; + self.textField = [[UITextField alloc] initWithFrame:CGRectNull]; + self.textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; + self.textField.inputAccessoryView = self.actionBar; + self.textField.delegate = self; + [self addSubview:self.textField]; - _dateLabel = [[UILabel alloc] initWithFrame:CGRectNull]; - _dateLabel.font = [UIFont systemFontOfSize:17]; - _dateLabel.backgroundColor = [UIColor clearColor]; - _dateLabel.textColor = self.detailTextLabel.textColor; - _dateLabel.highlightedTextColor = [UIColor whiteColor]; - _dateLabel.textAlignment = NSTextAlignmentRight; - _dateLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth; - [self.contentView addSubview:_dateLabel]; + self.dateLabel = [[UILabel alloc] initWithFrame:CGRectNull]; + self.dateLabel.font = [UIFont systemFontOfSize:17]; + self.dateLabel.backgroundColor = [UIColor clearColor]; + self.dateLabel.textColor = self.detailTextLabel.textColor; + self.dateLabel.highlightedTextColor = [UIColor whiteColor]; + self.dateLabel.textAlignment = NSTextAlignmentRight; + self.dateLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth; + [self.contentView addSubview:self.dateLabel]; - _placeholderLabel = [[UILabel alloc] initWithFrame:CGRectNull]; - _placeholderLabel.font = [UIFont systemFontOfSize:17]; - _placeholderLabel.backgroundColor = [UIColor clearColor]; - _placeholderLabel.textColor = [UIColor lightGrayColor]; - _placeholderLabel.highlightedTextColor = [UIColor whiteColor]; - [self.contentView addSubview:_placeholderLabel]; + self.placeholderLabel = [[UILabel alloc] initWithFrame:CGRectNull]; + self.placeholderLabel.font = [UIFont systemFontOfSize:17]; + self.placeholderLabel.backgroundColor = [UIColor clearColor]; + self.placeholderLabel.textColor = [UIColor lightGrayColor]; + self.placeholderLabel.highlightedTextColor = [UIColor whiteColor]; + [self.contentView addSubview:self.placeholderLabel]; - _dateFormatter = [[NSDateFormatter alloc] init]; + self.dateFormatter = [[NSDateFormatter alloc] init]; - _datePicker = [[UIDatePicker alloc] init]; - [_datePicker addTarget:self action:@selector(datePickerValueDidChange:) forControlEvents:UIControlEventValueChanged]; + self.datePicker = [[UIDatePicker alloc] init]; + [self.datePicker addTarget:self action:@selector(datePickerValueDidChange:) forControlEvents:UIControlEventValueChanged]; } - (void)cellWillAppear { self.textLabel.text = self.item.title.length == 0 ? @" " : self.item.title; - self.textField.inputView = _datePicker; - _datePicker.date = self.item.value ? self.item.value : [NSDate date]; - _datePicker.datePickerMode = self.item.datePickerMode; - _datePicker.locale = self.item.locale; - _datePicker.calendar = self.item.calendar; - _datePicker.timeZone = self.item.timeZone; - _datePicker.minimumDate = self.item.minimumDate; - _datePicker.maximumDate = self.item.maximumDate; - _datePicker.minuteInterval = self.item.minuteInterval; - _dateFormatter.dateFormat = self.item.format; - _dateLabel.text = self.item.value ? [_dateFormatter stringFromDate:self.item.value] : @""; - _placeholderLabel.text = self.item.placeholder; - _placeholderLabel.hidden = self.dateLabel.text.length > 0; + self.textField.inputView = self.datePicker; + self.datePicker.date = self.item.value ? self.item.value : [NSDate date]; + self.datePicker.datePickerMode = self.item.datePickerMode; + self.datePicker.locale = self.item.locale; + self.datePicker.calendar = self.item.calendar; + self.datePicker.timeZone = self.item.timeZone; + self.datePicker.minimumDate = self.item.minimumDate; + self.datePicker.maximumDate = self.item.maximumDate; + self.datePicker.minuteInterval = self.item.minuteInterval; + self.dateFormatter.dateFormat = self.item.format; + self.dateLabel.text = self.item.value ? [self.dateFormatter stringFromDate:self.item.value] : @""; + self.placeholderLabel.text = self.item.placeholder; + self.placeholderLabel.hidden = self.dateLabel.text.length > 0; } - (void)layoutSubviews @@ -92,8 +102,8 @@ self.textField.frame = CGRectNull; self.textField.alpha = 0; - [self layoutDetailView:_dateLabel minimumWidth:[_dateLabel.text sizeWithFont:_dateLabel.font].width]; - [self layoutDetailView:_placeholderLabel minimumWidth:[_placeholderLabel.text sizeWithFont:_placeholderLabel.font].width]; + [self layoutDetailView:self.dateLabel minimumWidth:[self.dateLabel.text sizeWithFont:self.dateLabel.font].width]; + [self layoutDetailView:self.placeholderLabel minimumWidth:[self.placeholderLabel.text sizeWithFont:self.placeholderLabel.font].width]; if ([self.tableViewManager.delegate respondsToSelector:@selector(tableView:willLayoutCellSubviews:forRowAtIndexPath:)]) [self.tableViewManager.delegate tableView:self.tableViewManager.tableView willLayoutCellSubviews:self forRowAtIndexPath:[(UITableView *)self.superview indexPathForCell:self]]; @@ -103,13 +113,13 @@ { [super setSelected:selected animated:animated]; if (selected) { - [_textField becomeFirstResponder]; + [self.textField becomeFirstResponder]; } } - (UIResponder *)responder { - return _textField; + return self.textField; } #pragma mark - @@ -133,8 +143,8 @@ - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { [self setSelected:NO animated:NO]; - self.item.value = _datePicker.date; - self.dateLabel.text = [_dateFormatter stringFromDate:self.item.value]; + self.item.value = self.datePicker.date; + self.dateLabel.text = [self.dateFormatter stringFromDate:self.item.value]; self.placeholderLabel.hidden = self.dateLabel.text.length > 0; return YES; } @@ -144,8 +154,8 @@ - (void)datePickerValueDidChange:(UIDatePicker *)datePicker { - self.item.value = _datePicker.date; - self.dateLabel.text = [_dateFormatter stringFromDate:self.item.value]; + self.item.value = self.datePicker.date; + self.dateLabel.text = [self.dateFormatter stringFromDate:self.item.value]; self.placeholderLabel.hidden = self.dateLabel.text.length > 0; if (self.item.onChange) self.item.onChange(self.item); diff --git a/RETableViewManager/Cells/RETableViewFloatCell.m b/RETableViewManager/Cells/RETableViewFloatCell.m index 6a09e83..a4df9c7 100644 --- a/RETableViewManager/Cells/RETableViewFloatCell.m +++ b/RETableViewManager/Cells/RETableViewFloatCell.m @@ -26,6 +26,12 @@ #import "RETableViewFloatCell.h" #import "RETableViewManager.h" +@interface RETableViewFloatCell () + +@property (strong, readwrite, nonatomic) UISlider *sliderView; + +@end + @implementation RETableViewFloatCell #pragma mark - @@ -36,17 +42,17 @@ [super cellDidLoad]; self.selectionStyle = UITableViewCellSelectionStyleNone; - _sliderView = [[UISlider alloc] initWithFrame:CGRectMake(0, 0, 100, 23.0)]; - [_sliderView addTarget:self action:@selector(sliderValueDidChange:) forControlEvents:UIControlEventValueChanged]; + self.sliderView = [[UISlider alloc] initWithFrame:CGRectMake(0, 0, 100, 23.0)]; + [self.sliderView addTarget:self action:@selector(sliderValueDidChange:) forControlEvents:UIControlEventValueChanged]; - [self.contentView addSubview:_sliderView]; + [self.contentView addSubview:self.sliderView]; } - (void)cellWillAppear { self.textLabel.text = self.item.title; self.textLabel.backgroundColor = [UIColor clearColor]; - _sliderView.value = self.item.value; + self.sliderView.value = self.item.value; } - (void)layoutSubviews @@ -56,7 +62,7 @@ if (REUIKitIsFlatMode() && self.section.style.contentViewMargin <= 0) cellOffset += 5.0; - _sliderView.frame = CGRectMake(self.contentView.frame.size.width - self.item.sliderWidth - cellOffset, (self.contentView.frame.size.height - _sliderView.frame.size.height) / 2.0, self.item.sliderWidth, 23.0); + self.sliderView.frame = CGRectMake(self.contentView.frame.size.width - self.item.sliderWidth - cellOffset, (self.contentView.frame.size.height - self.sliderView.frame.size.height) / 2.0, self.item.sliderWidth, 23.0); if ([self.tableViewManager.delegate respondsToSelector:@selector(tableView:willLayoutCellSubviews:forRowAtIndexPath:)]) [self.tableViewManager.delegate tableView:self.tableViewManager.tableView willLayoutCellSubviews:self forRowAtIndexPath:[(UITableView *)self.superview indexPathForCell:self]]; diff --git a/RETableViewManager/Cells/RETableViewLongTextCell.h b/RETableViewManager/Cells/RETableViewLongTextCell.h index cf04e94..ccfa95c 100644 --- a/RETableViewManager/Cells/RETableViewLongTextCell.h +++ b/RETableViewManager/Cells/RETableViewLongTextCell.h @@ -30,6 +30,6 @@ @interface RETableViewLongTextCell : RETableViewCell @property (strong, readwrite, nonatomic) RELongTextItem *item; -@property (strong, readwrite, nonatomic) REPlaceholderTextView *textView; +@property (strong, readonly, nonatomic) REPlaceholderTextView *textView; @end diff --git a/RETableViewManager/Cells/RETableViewLongTextCell.m b/RETableViewManager/Cells/RETableViewLongTextCell.m index 933c06b..2f7a9e4 100644 --- a/RETableViewManager/Cells/RETableViewLongTextCell.m +++ b/RETableViewManager/Cells/RETableViewLongTextCell.m @@ -26,6 +26,12 @@ #import "RETableViewLongTextCell.h" #import "RETableViewManager.h" +@interface RETableViewLongTextCell () + +@property (strong, readwrite, nonatomic) REPlaceholderTextView *textView; + +@end + @implementation RETableViewLongTextCell + (BOOL)canFocusWithItem:(RELongTextItem *)item @@ -42,20 +48,20 @@ self.selectionStyle = UITableViewCellSelectionStyleNone; self.textLabel.backgroundColor = [UIColor clearColor]; - _textView = [[REPlaceholderTextView alloc] init]; - _textView.translatesAutoresizingMaskIntoConstraints = NO; - _textView.inputAccessoryView = self.actionBar; - _textView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - _textView.backgroundColor = [UIColor clearColor]; - _textView.delegate = self; - [self.contentView addSubview:_textView]; + self.textView = [[REPlaceholderTextView alloc] init]; + self.textView.translatesAutoresizingMaskIntoConstraints = NO; + self.textView.inputAccessoryView = self.actionBar; + self.textView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; + self.textView.backgroundColor = [UIColor clearColor]; + self.textView.delegate = self; + [self.contentView addSubview:self.textView]; } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; if (selected) { - [_textView becomeFirstResponder]; + [self.textView becomeFirstResponder]; } } @@ -67,26 +73,27 @@ CGFloat padding = (REUIKitIsFlatMode() && self.section.style.contentViewMargin <= 0) ? 7 : 2; NSDictionary *metrics = @{ @"padding": @(padding) }; + UITextView *textView = self.textView; [self.contentView removeConstraints:self.contentView.constraints]; - [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_textView]-2-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_textView, label)]]; - [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-padding-[_textView]-padding-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(_textView, label)]]; + [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[textView]-2-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(textView, label)]]; + [self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-padding-[textView]-padding-|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(textView, label)]]; - _textView.editable = self.item.editable; - _textView.inputAccessoryView = _textView.editable ? self.actionBar : nil; + self.textView.editable = self.item.editable; + self.textView.inputAccessoryView = self.textView.editable ? self.actionBar : nil; - _textView.text = self.item.value; - _textView.placeholder = self.item.placeholder; - _textView.placeholderColor = self.item.placeholderColor; - _textView.font = [UIFont systemFontOfSize:17]; - _textView.autocapitalizationType = self.item.autocapitalizationType; - _textView.autocorrectionType = self.item.autocorrectionType; - _textView.spellCheckingType = self.item.spellCheckingType; - _textView.keyboardType = self.item.keyboardType; - _textView.keyboardAppearance = self.item.keyboardAppearance; - _textView.returnKeyType = self.item.returnKeyType; - _textView.enablesReturnKeyAutomatically = self.item.enablesReturnKeyAutomatically; - _textView.secureTextEntry = self.item.secureTextEntry; - [_textView setNeedsDisplay]; + self.textView.text = self.item.value; + self.textView.placeholder = self.item.placeholder; + self.textView.placeholderColor = self.item.placeholderColor; + self.textView.font = [UIFont systemFontOfSize:17]; + self.textView.autocapitalizationType = self.item.autocapitalizationType; + self.textView.autocorrectionType = self.item.autocorrectionType; + self.textView.spellCheckingType = self.item.spellCheckingType; + self.textView.keyboardType = self.item.keyboardType; + self.textView.keyboardAppearance = self.item.keyboardAppearance; + self.textView.returnKeyType = self.item.returnKeyType; + self.textView.enablesReturnKeyAutomatically = self.item.enablesReturnKeyAutomatically; + self.textView.secureTextEntry = self.item.secureTextEntry; + [self.textView setNeedsDisplay]; } - (UIResponder *)responder @@ -94,7 +101,7 @@ if (!self.item.editable) return nil; - return _textView; + return self.textView; } - (void)layoutSubviews diff --git a/RETableViewManager/Cells/RETableViewNumberCell.h b/RETableViewManager/Cells/RETableViewNumberCell.h index e915ccb..ba83d54 100644 --- a/RETableViewManager/Cells/RETableViewNumberCell.h +++ b/RETableViewManager/Cells/RETableViewNumberCell.h @@ -29,6 +29,6 @@ @interface RETableViewNumberCell : RETableViewTextCell @property (strong, readwrite, nonatomic) RENumberItem *item; -@property (strong, readwrite, nonatomic) REFormattedNumberField *textField; +@property (strong, readonly, nonatomic) REFormattedNumberField *textField; @end diff --git a/RETableViewManager/Cells/RETableViewNumberCell.m b/RETableViewManager/Cells/RETableViewNumberCell.m index fd8f056..c19800b 100644 --- a/RETableViewManager/Cells/RETableViewNumberCell.m +++ b/RETableViewManager/Cells/RETableViewNumberCell.m @@ -26,6 +26,12 @@ #import "RETableViewNumberCell.h" #import "RETableViewManager.h" +@interface RETableViewNumberCell () + +@property (strong, readwrite, nonatomic) REFormattedNumberField *textField; + +@end + @implementation RETableViewNumberCell + (BOOL)canFocusWithItem:(RETableViewItem *)item diff --git a/RETableViewManager/Cells/RETableViewOptionCell.h b/RETableViewManager/Cells/RETableViewOptionCell.h index 5bb4541..f4f5a6f 100644 --- a/RETableViewManager/Cells/RETableViewOptionCell.h +++ b/RETableViewManager/Cells/RETableViewOptionCell.h @@ -29,6 +29,6 @@ @interface RETableViewOptionCell : RETableViewCell @property (strong, readwrite, nonatomic) RERadioItem *item; -@property (strong, readwrite, nonatomic) UILabel *valueLabel; +@property (strong, readonly, nonatomic) UILabel *valueLabel; @end diff --git a/RETableViewManager/Cells/RETableViewOptionCell.m b/RETableViewManager/Cells/RETableViewOptionCell.m index 3df03cc..7ff9062 100644 --- a/RETableViewManager/Cells/RETableViewOptionCell.m +++ b/RETableViewManager/Cells/RETableViewOptionCell.m @@ -26,6 +26,12 @@ #import "RETableViewOptionCell.h" #import "RETableViewManager.h" +@interface RETableViewOptionCell () + +@property (strong, readwrite, nonatomic) UILabel *valueLabel; + +@end + @implementation RETableViewOptionCell #pragma mark - @@ -36,13 +42,13 @@ [super cellDidLoad]; self.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - _valueLabel = [[UILabel alloc] initWithFrame:CGRectNull]; - _valueLabel.font = [UIFont systemFontOfSize:17]; - _valueLabel.backgroundColor = [UIColor clearColor]; - _valueLabel.textColor = self.detailTextLabel.textColor; - _valueLabel.highlightedTextColor = [UIColor whiteColor]; - _valueLabel.textAlignment = NSTextAlignmentRight; - [self.contentView addSubview:_valueLabel]; + self.valueLabel = [[UILabel alloc] initWithFrame:CGRectNull]; + self.valueLabel.font = [UIFont systemFontOfSize:17]; + self.valueLabel.backgroundColor = [UIColor clearColor]; + self.valueLabel.textColor = self.detailTextLabel.textColor; + self.valueLabel.highlightedTextColor = [UIColor whiteColor]; + self.valueLabel.textAlignment = NSTextAlignmentRight; + [self.contentView addSubview:self.valueLabel]; } - (void)cellWillAppear @@ -57,7 +63,7 @@ - (void)layoutSubviews { [super layoutSubviews]; - [self layoutDetailView:_valueLabel minimumWidth:[_valueLabel.text sizeWithFont:_valueLabel.font].width]; + [self layoutDetailView:self.valueLabel minimumWidth:[self.valueLabel.text sizeWithFont:self.valueLabel.font].width]; if (REUIKitIsFlatMode()) { CGRect frame = self.valueLabel.frame; frame.size.width += 10.0; diff --git a/RETableViewManager/Cells/RETableViewTextCell.h b/RETableViewManager/Cells/RETableViewTextCell.h index 7fddd62..941ed08 100644 --- a/RETableViewManager/Cells/RETableViewTextCell.h +++ b/RETableViewManager/Cells/RETableViewTextCell.h @@ -29,6 +29,6 @@ @interface RETableViewTextCell : RETableViewCell @property (strong, readwrite, nonatomic) RETextItem *item; -@property (strong, readwrite, nonatomic) UITextField *textField; +@property (strong, readonly, nonatomic) UITextField *textField; @end diff --git a/RETableViewManager/Cells/RETableViewTextCell.m b/RETableViewManager/Cells/RETableViewTextCell.m index 2d580a5..26921c2 100644 --- a/RETableViewManager/Cells/RETableViewTextCell.m +++ b/RETableViewManager/Cells/RETableViewTextCell.m @@ -26,6 +26,12 @@ #import "RETableViewTextCell.h" #import "RETableViewManager.h" +@interface RETableViewTextCell () + +@property (strong, readwrite, nonatomic) UITextField *textField; + +@end + @implementation RETableViewTextCell + (BOOL)canFocusWithItem:(RETableViewItem *)item @@ -41,20 +47,20 @@ [super cellDidLoad]; self.textLabel.backgroundColor = [UIColor clearColor]; - _textField = [[UITextField alloc] initWithFrame:CGRectNull]; - _textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; - _textField.inputAccessoryView = self.actionBar; - _textField.autoresizingMask = UIViewAutoresizingFlexibleWidth; - _textField.delegate = self; - [_textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; - [self.contentView addSubview:_textField]; + self.textField = [[UITextField alloc] initWithFrame:CGRectNull]; + self.textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; + self.textField.inputAccessoryView = self.actionBar; + self.textField.autoresizingMask = UIViewAutoresizingFlexibleWidth; + self.textField.delegate = self; + [self.textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; + [self.contentView addSubview:self.textField]; } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; if (selected) { - [_textField becomeFirstResponder]; + [self.textField becomeFirstResponder]; } } @@ -64,31 +70,31 @@ self.selectionStyle = UITableViewCellSelectionStyleNone; self.textLabel.text = self.item.title.length == 0 ? @" " : self.item.title; - _textField.text = self.item.value; - _textField.placeholder = self.item.placeholder; - _textField.font = [UIFont systemFontOfSize:17]; - _textField.autocapitalizationType = self.item.autocapitalizationType; - _textField.autocorrectionType = self.item.autocorrectionType; - _textField.spellCheckingType = self.item.spellCheckingType; - _textField.keyboardType = self.item.keyboardType; - _textField.keyboardAppearance = self.item.keyboardAppearance; - _textField.returnKeyType = self.item.returnKeyType; - _textField.enablesReturnKeyAutomatically = self.item.enablesReturnKeyAutomatically; - _textField.secureTextEntry = self.item.secureTextEntry; - _textField.clearButtonMode = self.item.clearButtonMode; - _textField.clearsOnBeginEditing = self.item.clearsOnBeginEditing; + self.textField.text = self.item.value; + self.textField.placeholder = self.item.placeholder; + self.textField.font = [UIFont systemFontOfSize:17]; + self.textField.autocapitalizationType = self.item.autocapitalizationType; + self.textField.autocorrectionType = self.item.autocorrectionType; + self.textField.spellCheckingType = self.item.spellCheckingType; + self.textField.keyboardType = self.item.keyboardType; + self.textField.keyboardAppearance = self.item.keyboardAppearance; + self.textField.returnKeyType = self.item.returnKeyType; + self.textField.enablesReturnKeyAutomatically = self.item.enablesReturnKeyAutomatically; + self.textField.secureTextEntry = self.item.secureTextEntry; + self.textField.clearButtonMode = self.item.clearButtonMode; + self.textField.clearsOnBeginEditing = self.item.clearsOnBeginEditing; } - (UIResponder *)responder { - return _textField; + return self.textField; } - (void)layoutSubviews { [super layoutSubviews]; - [self layoutDetailView:_textField minimumWidth:0]; + [self layoutDetailView:self.textField minimumWidth:0]; if ([self.tableViewManager.delegate respondsToSelector:@selector(tableView:willLayoutCellSubviews:forRowAtIndexPath:)]) [self.tableViewManager.delegate tableView:self.tableViewManager.tableView willLayoutCellSubviews:self forRowAtIndexPath:[(UITableView *)self.superview indexPathForCell:self]]; diff --git a/RETableViewManager/REActionBar.m b/RETableViewManager/REActionBar.m index ba72297..b313aaa 100644 --- a/RETableViewManager/REActionBar.m +++ b/RETableViewManager/REActionBar.m @@ -26,6 +26,12 @@ #import "REActionBar.h" #import "RETableViewManager.h" +@interface REActionBar () + +@property (strong, readwrite, nonatomic) UISegmentedControl *navigationControl; + +@end + @implementation REActionBar - (id)initWithDelegate:(id)delegate @@ -43,12 +49,12 @@ UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Done", @"") style:UIBarButtonItemStyleDone target:self action:@selector(handleActionBarDone:)]; - _navigationControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:NSLocalizedString(@"Previous", @""), NSLocalizedString(@"Next", @""), nil]]; - _navigationControl.momentary = YES; - _navigationControl.segmentedControlStyle = UISegmentedControlStyleBar; - _navigationControl.tintColor = self.tintColor; - [_navigationControl addTarget:self action:@selector(handleActionBarPreviousNext:) forControlEvents:UIControlEventValueChanged]; - UIBarButtonItem *prevNextWrapper = [[UIBarButtonItem alloc] initWithCustomView:_navigationControl]; + self.navigationControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:NSLocalizedString(@"Previous", @""), NSLocalizedString(@"Next", @""), nil]]; + self.navigationControl.momentary = YES; + self.navigationControl.segmentedControlStyle = UISegmentedControlStyleBar; + self.navigationControl.tintColor = self.tintColor; + [self.navigationControl addTarget:self action:@selector(handleActionBarPreviousNext:) forControlEvents:UIControlEventValueChanged]; + UIBarButtonItem *prevNextWrapper = [[UIBarButtonItem alloc] initWithCustomView:self.navigationControl]; UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; [self setItems:[NSArray arrayWithObjects:prevNextWrapper, flexible, doneButton, nil]]; self.actionBarDelegate = delegate; @@ -58,14 +64,14 @@ - (void)handleActionBarPreviousNext:(UISegmentedControl *)segmentedControl { - if ([_actionBarDelegate respondsToSelector:@selector(actionBar:navigationControlValueChanged:)]) - [_actionBarDelegate actionBar:self navigationControlValueChanged:segmentedControl]; + if ([self.actionBarDelegate respondsToSelector:@selector(actionBar:navigationControlValueChanged:)]) + [self.actionBarDelegate actionBar:self navigationControlValueChanged:segmentedControl]; } - (void)handleActionBarDone:(UIBarButtonItem *)doneButtonItem { - if ([_actionBarDelegate respondsToSelector:@selector(actionBar:doneButtonPressed:)]) - [_actionBarDelegate actionBar:self doneButtonPressed:doneButtonItem]; + if ([self.actionBarDelegate respondsToSelector:@selector(actionBar:doneButtonPressed:)]) + [self.actionBarDelegate actionBar:self doneButtonPressed:doneButtonItem]; } @end diff --git a/RETableViewManager/REPlaceholderTextView.m b/RETableViewManager/REPlaceholderTextView.m index dae1128..6190b65 100644 --- a/RETableViewManager/REPlaceholderTextView.m +++ b/RETableViewManager/REPlaceholderTextView.m @@ -25,6 +25,12 @@ #import "REPlaceholderTextView.h" +@interface REPlaceholderTextView () + +@property (strong, readwrite, nonatomic) UILabel *placeholderLabel; + +@end + @implementation REPlaceholderTextView - (void)awakeFromNib @@ -71,25 +77,25 @@ - (void)drawRect:(CGRect)rect { if (self.placeholder.length > 0) { - if (!_placeholderLabel) { - _placeholderLabel = [[UILabel alloc] initWithFrame:CGRectMake(8, 8, self.bounds.size.width - 16, 0)]; - _placeholderLabel.lineBreakMode = NSLineBreakByWordWrapping; - _placeholderLabel.numberOfLines = 0; - _placeholderLabel.font = self.font; - _placeholderLabel.backgroundColor = [UIColor clearColor]; - _placeholderLabel.textColor = self.placeholderColor; - _placeholderLabel.alpha = 0; - _placeholderLabel.tag = 999; - [self addSubview:_placeholderLabel]; + if (!self.placeholderLabel) { + self.placeholderLabel = [[UILabel alloc] initWithFrame:CGRectMake(8, 8, self.bounds.size.width - 16, 0)]; + self.placeholderLabel.lineBreakMode = NSLineBreakByWordWrapping; + self.placeholderLabel.numberOfLines = 0; + self.placeholderLabel.font = self.font; + self.placeholderLabel.backgroundColor = [UIColor clearColor]; + self.placeholderLabel.textColor = self.placeholderColor; + self.placeholderLabel.alpha = 0; + self.placeholderLabel.tag = 999; + [self addSubview:self.placeholderLabel]; } - _placeholderLabel.textAlignment = self.textAlignment; - _placeholderLabel.text = self.placeholder; - [_placeholderLabel sizeToFit]; - CGRect frame = _placeholderLabel.frame; + self.placeholderLabel.textAlignment = self.textAlignment; + self.placeholderLabel.text = self.placeholder; + [self.placeholderLabel sizeToFit]; + CGRect frame = self.placeholderLabel.frame; frame.size.width = self.bounds.size.width - self.frame.origin.x * 2; - _placeholderLabel.frame = frame; - [self sendSubviewToBack:_placeholderLabel]; + self.placeholderLabel.frame = frame; + [self sendSubviewToBack:self.placeholderLabel]; } if (self.text.length == 0 && self.placeholder.length > 0) { diff --git a/RETableViewManager/RETableViewCell.m b/RETableViewManager/RETableViewCell.m index 4113bb5..d343957 100755 --- a/RETableViewManager/RETableViewCell.m +++ b/RETableViewManager/RETableViewCell.m @@ -29,6 +29,8 @@ @interface RETableViewCell () @property (assign, readwrite, nonatomic) BOOL loaded; +@property (strong, readwrite, nonatomic) UIImageView *backgroundImageView; +@property (strong, readwrite, nonatomic) UIImageView *selectedBackgroundImageView; @end @@ -57,19 +59,19 @@ self.tableViewManager.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; self.backgroundView = [[UIView alloc] initWithFrame:self.contentView.bounds]; self.backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - _backgroundImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.backgroundView.bounds.size.width, self.backgroundView.bounds.size.height + 1)]; - _backgroundImageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - [self.backgroundView addSubview:_backgroundImageView]; + self.backgroundImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.backgroundView.bounds.size.width, self.backgroundView.bounds.size.height + 1)]; + self.backgroundImageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; + [self.backgroundView addSubview:self.backgroundImageView]; } - (void)addSelectedBackgroundImage { self.selectedBackgroundView = [[UIView alloc] initWithFrame:self.contentView.bounds]; self.selectedBackgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - _selectedBackgroundImageView = [[UIImageView alloc] init]; - _selectedBackgroundImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.selectedBackgroundView.bounds.size.width, self.selectedBackgroundView.bounds.size.height + 1)]; - _selectedBackgroundImageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - [self.selectedBackgroundView addSubview:_selectedBackgroundImageView]; + self.selectedBackgroundImageView = [[UIImageView alloc] init]; + self.selectedBackgroundImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.selectedBackgroundView.bounds.size.width, self.selectedBackgroundView.bounds.size.height + 1)]; + self.selectedBackgroundImageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; + [self.selectedBackgroundView addSubview:self.selectedBackgroundImageView]; } #pragma mark - @@ -144,17 +146,17 @@ if ([self.section.style hasCustomBackgroundImage]) { self.backgroundColor = [UIColor clearColor]; - if (!_backgroundImageView) { + if (!self.backgroundImageView) { [self addBackgroundImage]; } - _backgroundImageView.image = [self.section.style backgroundImageForCellType:self.type]; + self.backgroundImageView.image = [self.section.style backgroundImageForCellType:self.type]; } if ([self.section.style hasCustomSelectedBackgroundImage]) { - if (!_selectedBackgroundImageView) { + if (!self.selectedBackgroundImageView) { [self addSelectedBackgroundImage]; } - _selectedBackgroundImageView.image = [self.section.style selectedBackgroundImageForCellType:self.type]; + self.selectedBackgroundImageView.image = [self.section.style selectedBackgroundImageForCellType:self.type]; } // Set background frame diff --git a/RETableViewManager/RETableViewCellStyle.m b/RETableViewManager/RETableViewCellStyle.m index 64301cc..0bf02c2 100644 --- a/RETableViewManager/RETableViewCellStyle.m +++ b/RETableViewManager/RETableViewCellStyle.m @@ -34,10 +34,10 @@ if (!self) return nil; - _backgroundImages = [[NSMutableDictionary alloc] init]; - _selectedBackgroundImages = [[NSMutableDictionary alloc] init]; - _cellHeight = 44.0; - _defaultCellSelectionStyle = UITableViewCellSelectionStyleBlue; + self.backgroundImages = [[NSMutableDictionary alloc] init]; + self.selectedBackgroundImages = [[NSMutableDictionary alloc] init]; + self.cellHeight = 44.0; + self.defaultCellSelectionStyle = UITableViewCellSelectionStyleBlue; return self; } @@ -63,16 +63,16 @@ - (UIImage *)backgroundImageForCellType:(RETableViewCellType)cellType { - UIImage *image = [_backgroundImages objectForKey:@(cellType)]; + UIImage *image = [self.backgroundImages objectForKey:@(cellType)]; if (!image && cellType != RETableViewCellTypeAny) - image = [_backgroundImages objectForKey:@(RETableViewCellTypeAny)]; + image = [self.backgroundImages objectForKey:@(RETableViewCellTypeAny)]; return image; } - (void)setBackgroundImage:(UIImage *)image forCellType:(RETableViewCellType)cellType { if (image) - [_backgroundImages setObject:image forKey:@(cellType)]; + [self.backgroundImages setObject:image forKey:@(cellType)]; } - (BOOL)hasCustomSelectedBackgroundImage @@ -82,16 +82,16 @@ - (UIImage *)selectedBackgroundImageForCellType:(RETableViewCellType)cellType { - UIImage *image = [_selectedBackgroundImages objectForKey:@(cellType)]; + UIImage *image = [self.selectedBackgroundImages objectForKey:@(cellType)]; if (!image && cellType != RETableViewCellTypeAny) - image = [_selectedBackgroundImages objectForKey:@(RETableViewCellTypeAny)]; + image = [self.selectedBackgroundImages objectForKey:@(RETableViewCellTypeAny)]; return image; } - (void)setSelectedBackgroundImage:(UIImage *)image forCellType:(RETableViewCellType)cellType { if (image) - [_selectedBackgroundImages setObject:image forKey:@(cellType)]; + [self.selectedBackgroundImages setObject:image forKey:@(cellType)]; } @end diff --git a/RETableViewManagerExample/RETableViewManagerExample/Classes/Views/ListHeaderView.m b/RETableViewManagerExample/RETableViewManagerExample/Classes/Views/ListHeaderView.m index f037118..6f557aa 100644 --- a/RETableViewManagerExample/RETableViewManagerExample/Classes/Views/ListHeaderView.m +++ b/RETableViewManagerExample/RETableViewManagerExample/Classes/Views/ListHeaderView.m @@ -8,6 +8,13 @@ #import "ListHeaderView.h" +@interface ListHeaderView () + +@property (strong, readwrite, nonatomic) UIImageView *userpicImageView; +@property (strong, readwrite, nonatomic) UILabel *usernameLabel; + +@end + @implementation ListHeaderView + (ListHeaderView *)headerViewWithImageNamed:(NSString *)imageNamed username:(NSString *)username @@ -29,14 +36,14 @@ backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth; [self addSubview:backgroundView]; - _userpicImageView = [[UIImageView alloc] initWithFrame:CGRectMake(7, 7, 30, 30)]; - [self addSubview:_userpicImageView]; + self.userpicImageView = [[UIImageView alloc] initWithFrame:CGRectMake(7, 7, 30, 30)]; + [self addSubview:self.userpicImageView]; - _usernameLabel = [[UILabel alloc] initWithFrame:CGRectMake(45, 3, 276, 35)]; - _usernameLabel.font = [UIFont boldSystemFontOfSize:14]; - _usernameLabel.textColor = [UIColor blackColor]; - _usernameLabel.backgroundColor = [UIColor clearColor]; - [self addSubview:_usernameLabel]; + self.usernameLabel = [[UILabel alloc] initWithFrame:CGRectMake(45, 3, 276, 35)]; + self.usernameLabel.font = [UIFont boldSystemFontOfSize:14]; + self.usernameLabel.textColor = [UIColor blackColor]; + self.usernameLabel.backgroundColor = [UIColor clearColor]; + [self addSubview:self.usernameLabel]; } return self; } diff --git a/RETableViewManagerExample/RETableViewManagerExample/Classes/Views/ListImageCell.m b/RETableViewManagerExample/RETableViewManagerExample/Classes/Views/ListImageCell.m index 5436f4c..5081a7e 100644 --- a/RETableViewManagerExample/RETableViewManagerExample/Classes/Views/ListImageCell.m +++ b/RETableViewManagerExample/RETableViewManagerExample/Classes/Views/ListImageCell.m @@ -8,6 +8,12 @@ #import "ListImageCell.h" +@interface ListImageCell () + +@property (strong, readwrite, nonatomic) UIImageView *pictureView; + +@end + @implementation ListImageCell + (CGFloat)heightWithItem:(NSObject *)item tableViewManager:(RETableViewManager *)tableViewManager @@ -18,15 +24,15 @@ - (void)cellDidLoad { [super cellDidLoad]; - _pictureView = [[UIImageView alloc] initWithFrame:CGRectMake(7, 0, 306, 306)]; - _pictureView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; - [self addSubview:_pictureView]; + self.pictureView = [[UIImageView alloc] initWithFrame:CGRectMake(7, 0, 306, 306)]; + self.pictureView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; + [self addSubview:self.pictureView]; } - (void)cellWillAppear { [super cellWillAppear]; - [_pictureView setImage:[UIImage imageNamed:self.item.imageName]]; + [self.pictureView setImage:[UIImage imageNamed:self.item.imageName]]; } - (void)cellDidDisappear