第三方MBXPageViewController的使用和注意事项

GitHub的地址: https://github.com/Moblox/MBXPageViewController

介绍SegmentController的使用:

- (void)createSegmentView {
    
    CGFloat segmentX = (K_SCREEN_WIDTH - 150)/2;
    CGFloat topHeight = 40.f;
    CGFloat segmentY = (topHeight - K_SEGMENTED_CONTROL_HEIGHT) * 0.5 + 20;
    CGFloat segmentWidth = 200;
    UISegmentedControl *segmentControl = [[UISegmentedControl alloc] initWithItems:@[@"申请信息",@"审批操作"]];
    segmentControl.frame = CGRectMake(segmentX, segmentY, segmentWidth, K_SEGMENTED_CONTROL_HEIGHT);
    segmentControl.selectedSegmentIndex = 0;
    segmentControl.tintColor = MAIN_COLOR;
    [self.view addSubview:segmentControl];
    self.segmentControl = segmentControl;
    
    UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0, topHeight + 20, K_SCREEN_WIDTH, K_SCREEN_HEIGHT - K_STATUS_BAR_AND_NAVI_BAR_HEIGHT - topHeight)];
    [self.view addSubview:containerView];
    self.containerView = containerView;
    
    self.MBXPageController = [MBXPageViewController new];
    self.MBXPageController.MBXDataSource = self;
    self.MBXPageController.MBXDataDelegate = self;
    self.MBXPageController.pageMode = MBX_SegmentController;
    [self.MBXPageController reloadPages];
    [self MBXPageChangedToIndex:0];
}

代理使用如下:

#pragma mark - MBXPageViewController Data Source

- (NSArray *)MBXPageButtons {
    return @[self.segmentControl];
}

- (UIView *)MBXPageContainer {
    return self.containerView;
}

// 给控制器传递数据在此代理写!!!
- (NSArray *)MBXPageControllers { ApplyInfoViewController *appVc = [ApplyInfoViewController new]; appVc.idString = self.model.idString; RepairCheckViewController *checkVc = [RepairCheckViewController new]; checkVc.idString2 = self.model.idString; return @[appVc, checkVc]; } #pragma mark - MBXPageViewController Delegate
// 给控制器传递数据不能再这里写!!!否则不能刷新表视图!!! - (void)MBXPageChangedToIndex:(NSInteger)index { // if (index == 0) { // NSLog(@"111"); // ApplyInfoViewController *applyInfoVc = self.MBXPageControllers[0]; // [self.containerView addSubview:applyInfoVc.view]; // applyInfoVc.idString = self.model.idString; //// applyInfoVc.model = self.model; // } // else { // NSLog(@"222"); // RepairCheckViewController *checkVc = self.MBXPageControllers[1]; // [self.containerView addSubview:checkVc.view]; // checkVc.idString2 = self.model.idString; //// checkVc.model = self.model; // } }

总结:

1.表视图cellForRow不执行的原因如下几种:

1>.dataSource和delegate没有设置

2>.numberOfRowsInSection和numberOfRowsInSection返回的数据不是大于0的整数

3>.tableView没有添加到父视图上(这种情况,第2点种的方法都执行了)

2.使用第三方框架的时候一定要先熟悉使用方法,不然会在使用上浪费很多时间.

花了一天的时间找问题,很高兴最后还是找到问题所在了,还是学到了点东东.....好开心,加油!!! 

原文地址:https://www.cnblogs.com/pengsi/p/6394883.html