체인 개발(iOS 컨트롤 활용)
전언
체인 프로그래밍의 이해득실
장점
결점
비교적 강한 코드 능력이 필요하다(hahahahahaha 자뻑 일파)
실례를 운용하다
TableView
UItableView의 category를 만들고 새 파일에 다음 코드를 추가합니다
@interface UITableView (ChainStyle)
+ (UITableView *)makeTableViewPlain:(void (^)(UITableView *))block;//
+ (UITableView *)makeTableViewGroup:(void (^)(UITableView *))block;
- (UITableView *(^)(CGRect rect))mFrame;// frame
- (UITableView *(^)(CGFloat rowHeight))mRowHeight;//
- (UITableView *(^)(UIColor * bgColor))mBgColor;//
- (UITableView *(^)(BOOL showVerticalScrollIndicator))mShowVertical;//
- (UITableView *(^)(BOOL showHorizontalScrollIndicator))mShowHorizontal;//
- (UITableView *(^)(UITableViewCellSeparatorStyle separatorStyle))mSeparatorStyle;//cell
- (UITableView *(^)(Class className, NSString *identifier))mTableViewCellClass;//cell class
- (UITableView *(^)(id delegate, id dataSource))mDelegate;//
@end
@implementation UITableView (ChainStyle)
+ (UITableView *)makeTableViewPlain:(void (^)(UITableView *))block {
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
block(tableView);
return tableView;
}
+ (UITableView *)makeTableViewGroup:(void (^)(UITableView *))block {
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
block(tableView);
return tableView;
}
- (UITableView *(^)(CGRect))mFrame {
return ^id(CGRect rect) {
self.frame = rect;
return self;
};
}
- (UITableView *(^)(CGFloat))mRowHeight {
return ^id(CGFloat rowHeight) {
self.rowHeight = rowHeight;
return self;
};
}
- (UITableView *(^)(UIColor *))mBgColor {
return ^id(UIColor * bgColor) {
self.backgroundColor = bgColor;
return self;
};
}
- (UITableView *(^)(BOOL))mShowVertical {
return ^id(BOOL showVerticalScrollIndicator) {
self.showsVerticalScrollIndicator = showVerticalScrollIndicator;
return self;
};
}
- (UITableView *(^)(BOOL))mShowHorizontal {
return ^id(BOOL showHorizontalScrollIndicator) {
self.showsHorizontalScrollIndicator = showHorizontalScrollIndicator;
return self;
};
}
- (UITableView *(^)(UITableViewCellSeparatorStyle))mSeparatorStyle {
return ^id(UITableViewCellSeparatorStyle separatorStyle) {
self.separatorStyle = separatorStyle;
return self;
};
}
-(UITableView *(^)(__unsafe_unretained Class, NSString *))mTableViewCellClass {
return ^id(Class className, NSString *identifier) {
[self registerClass:className forCellReuseIdentifier:identifier];
return self;
};
}
- (UITableView *(^)(id, id))mDelegate {
return ^id(id delegate ,id dataSource) {
self.delegate = delegate;
self.dataSource = dataSource;
return self;
};
}
@end
응용 프로그램
#import "UITableView+ChainStyle.h"
- (void)makeTableView {
if (_tableView == nil) {
[UITableView makeTableViewPlain:^(UITableView *tableView) {
_tableView = tableView;
tableView.mFrame(CGRectMake(0, 0, Screen_width, Screen_height - 64)).mRowHeight(40).mShowVertical(YES).mShowHorizontal(NO).mBgColor([UIColor whiteColor]).mSeparatorStyle(UITableViewCellSeparatorStyleNone).mTableViewCellClass([UITableViewCell class], @"Animation").mDelegate(self, self).addView(self.view);
}];
}
}
[self makeTableView];
코드는 위와 같이 button, label 등 공간을 똑같이 봉인할 수 있으며 향후 프로젝트에서 사용될 수 있다(tableView의 스타일 설정에서 UItable View Style은readonly이기 때문에 스타일의 체인 개발을 실현하지 못했기 때문에 신이 수정 방법을 제시할 수 있기를 바란다)
끝맺다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.