我々はXIBは、一般的には手のコードを持ってサポートするために必要なコントロールをパッケージ化する際に一般的に我々は、次の2つの方法で私たちのカスタムアクションの実装をサポートします。そして、initWithCoder上のピットが来ました。
/// 手码 - (instancetype)initWithFrame:(CGRect)フレーム{ セルフ = [スーパーinitWithFrame:フレーム]; IF (自己){ // カスタムアクション [自己initData]。 【自己initUI]。 } 返す自己を。 } /// XIB - (instancetype)initWithCoder:(NSCoder * )aDecoder { 自己 = [スーパーinitWithCoder:aDecoder]; IF (自己){ // カスタムアクション [自己initData]。 【自己initUI]。 } 返す自己を。 }
私は、ビュー上のUITableViewを詰め
- (ボイド)initUI { self.backgroundColor = [UIColor clearColor]。 [自己addSubview:self.appendixTableView]。 [self.appendixTableViewのmas_remakeConstraints: ^(MASConstraintMaker * メイク){ make.top.equalTo(self.mas_top)。 make.left.equalTo(self.mas_left)。 make.bottom.equalTo(self.mas_bottom)。 make.right.equalTo(self.mas_right)。 }]。 [self.appendixTableView registerClass:[iComeAppendixTableViewCell クラス] forCellReuseIdentifier:iComeAppendixTableViewCellReused]。 } - (のUITableView * )appendixTableView { 場合(!_appendixTableView){ _appendixTableView = [[のUITableViewのalloc] initWithFrame:CGRectZeroスタイル:UITableViewStyleGrouped]; _appendixTableView。デリゲート = 自己; _appendixTableView.dataSource = 自己; _appendixTableView.backgroundColor = [UIColor clearColor]。 _appendixTableView.separatorStyle = UITableViewCellSeparatorStyleNone。 _appendixTableView.bounces = NO。 _appendixTableView.showsHorizontalScrollIndicator = NO。 _appendixTableView.showsVerticalScrollIndicator = NO。 もし(@available(iOSの11.0、* )){ _appendixTableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever。 } 他{ self.viewController.automaticallyAdjustsScrollViewInsets = NO; } } 返す_appendixTableViewを。 }
次いで、特定の属性は、背景色、分割線、等として提供テーブルビューは、動作しないことを見出しました。ここで問題を識別するための様々な方法をテストした後、
// パッケージは、問題の包装をすることのUITableView UICollectionView問題はない // - (instanceType)initWithCoder:(NSCoder *)aDecoder { // 自己= [スーパーinitWithCoder:aDecoder]; // IF(自己){ // [セルフinitData ]; // [セルフinitUI]; // } // 自己を返す; // } // awakeFromNib方法における問題はない ( - ボイド{awakeFromNib) [スーパーawakeFromNib]。 【自己initData]。 【自己initUI]。 }
要約すると:
それはawakeFromNibでカスタムアクションを追加するのがベストですので、梱包initWithCoder問題があるのUITableView