美文网首页
iOS二级联动菜单

iOS二级联动菜单

作者: 哔哩哔哩智能喵 | 来源:发表于2016-11-28 13:43 被阅读633次

    两个控制器版本

    • 思路:两个不同的控制器,放两个tableview然后其中一个加载子标题,需要加载子标题的的控制器,监听被点击的那个控制器。可以用代理来解决监听事件,当tableview的某一个cell被点击的时候把这个被点击的cell的是哪一行传出去。

    • 复习代理

      • 代理书写格式
      • @protocol 代理名字(当前类的名字 + Delegate) <NSObject>
        @optionl (写代理方法,代理要做什么事情?点击category控制器把XCCategoryItem.subCategory数组传出去)
        @end
      • 代理生成为属性 需要遵守代理的协议,不然不可以实现代理的方法,注意代理用 ARC 下 week MAC 用 assign (用strong会一直持有对象不会释放)
      • 验证成为代理的方法有没有实现代理的方法
      if([self.delegate respondsToSelector:代理方法]){
          代理需要传出的值是什么
      }
      
    • 需要加载子控制器的tableview实现代理方法,把传过来的子标题,加到一个数组中去,tableviewcell.textLabel的值就从这个数组中取,在实现完代理方法之后,需要刷新一下表格。

    • 用这个方法主要是为了复习代理方法和 addchildViewController

    demo

    一个控制器解决 tableview联级菜单

    • 一个tableview的代理方法实现给两个控制器做数据源,需要判断当前表格是哪个表格

    BUG和一些小问题

    • 加了导航栏的BUG
      • 如果在一个控制器里加了两个tableview,然后在把一个导航控制的根控制器设置成加了两个tableview的控制器,会出现一个正常显示另一个错位,产生的原因:导航控制器会取出第一个控件给这第一个子控件加导航控制器,并且帮我们修改了第一个控件的contentInset属性(内边距的top加了64),所以第一个没问题,第二个控件没有帮我添加,需要手动修改contentInset属性的top也加64
    • UIScrollView也有这种问题,系统会自动帮我们添加一个
      //自动调整ScrollView的Insets
      automaticallyAdjustsScrollViewInsets 属性,这个属性也会自动帮我们增加64,并且默认是yes。
    • 造成这些问题的根本是导航控制器?还是导航栏?
      -调整Insets是取决于在不在导航控制器环境下

    相关文章

      网友评论

          本文标题:iOS二级联动菜单

          本文链接:https://www.haomeiwen.com/subject/cikopttx.html