iOS开发使用UITableView制作N级下拉菜单的示例

2020-01-21 04:20:41王振洲

最终效果如下:

 

 
iOS,N级下拉菜单,下拉菜单,制作下拉菜单,UITableView 

 

第十步, 使用已选择数据

这里主要是拿到所有已经选中的数据, 并进行操作

我只进行了打印操作, 如果需要, 可以自己修改

首先添加一个属性 selectedMenuItems , 用于存储已选数据

然后通过下列代码可以获取所有已经选中的数据


@interface LTMenuItemViewController () <LTMenuItemCellDelegate>
/** 菜单项 */
@property (nonatomic, strong) NSMutableArray<LTMenuItem *> *menuItems;
/** 当前需要展示的数据 */
@property (nonatomic, strong) NSMutableArray<LTMenuItem *> *latestShowMenuItems;
/** 以前需要展示的数据 */
@property (nonatomic, strong) NSMutableArray<LTMenuItem *> *oldShowMenuItems;
/** 已经选中的选项, 可用于回调 */
@property (nonatomic, strong) NSMutableArray<LTMenuItem *> *selectedMenuItems;
/** 全选按钮 */
@property (nonatomic, strong) UIButton *allBtn;
@end

#pragma mark - < 选中数据 >

- (void)printSelectedMenuItems:(UIButton *)sender
{
  [self.selectedMenuItems removeAllObjects];
  [self departmentsWithMenuItems:self.menuItems];
  NSLog(@"这里是全部选中数据n%@", self.selectedMenuItems);
}

/**
 获取选中数据
 */
- (void)departmentsWithMenuItems:(NSArray<LTMenuItem *> *)menuItems
{
  for (int i = 0; i < menuItems.count; i++) {
    LTMenuItem *menuItem = menuItems[i];
    if (menuItem.isSelected) {
      [self.selectedMenuItems addObject:menuItem];
    }
    if (menuItem.subs.count) {
      [self departmentsWithMenuItems:menuItem.subs];
    }
  }
}

通过递归, 一层层拿到所有已经选择的选项, 并进行打印操作

如果需要另外处理拿到的数据 只需要修改 printSelectedMenuItems 方法中的 NSLog(@"这里是全部选中数据n%@", self.selectedMenuItems); 即可

demo地址: https://github.com/963527512/MultilayerMenu

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持ASPKU。


注:相关教程知识阅读请移步到IOS开发频道。