1.xib\storyboard中给2个tableView设置constraints(等宽)
方法 :
①设置mainTableView的上\下\左\三部分的约束为0;subTableView上\下\右\的约束为0;
②同时选中mainTableView和subTableView,设置为等宽和等高;
 
2.代理和数据源设置
mainTableView和subTableView的代理和数据源都为该控制器
 
3.点击如何处理
示例情景:一个模型A给tableView提供数据,且有个属性为数组,数组里面存放着子模型B。mainTableView展示模型A的数据;subTableView展示模型B的数据。
方法:
#pragma mark - 数据源方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (tableView == self.mainTableView) {  // 主表
        return [存放主表的数组的个数];
    } else {  // 从表
        return [存放从表的数组的个数];
    }
}
 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = nil;
    if (tableView == self.mainTableView) {  // 主表
 
                 // 展示主表cell.textLable.text
 
        // 根据数组属性是否有值,判断是否添加箭头样式(提醒用户该主表存在从表数据)
        if (subdata.count) {
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        } else {
            cell.accessoryType = UITableViewCellAccessoryNone;
        }
    } else {  // 从表
         // 展示从表cell.textLable.text,需要注意的是需要在cell点击事件里面标记当前选中的cell的下标,设置为属性。因为从表里面展示的数据就是根据主表所选中的row实现的。
    }
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (tableView == self.mainTableView) {
        // 被点击的数据
        self.selectedMainRow = indexPath.row;

       
        // 刷新右边的数据(必须刷新)
        [self.subTableView reloadData];
    }
}
 
4.2个tableView在xib\storyboard中缩小的原因(不仅仅是tableView,其他控件往xib的View中添加也可能会出现)
 
分析为什么把xib中这2个tableView添加到控制器view上面,会消失:如下图
 
 
原因:storyboard或者xib中自动勾选了自动布局的,如果把xib中的tableView加载到父控件的view上面,如果父控件的view的尺寸缩小,那么xib中的tableView的大小也会跟随者父控件的尺寸缩小而缩小,并且最后会缩小为0。
导致的结果:
①导致view中不会显示tableView
②tableView消失之后,不会调用tableView的代理方法
解决办法:
- (void)awakeFromNib {
    // autoresizingMask,该属性默认为none。如果xib/storyboard中设置了autolayout,那么该属性就会被打开。需要我们自己手动关闭。
    self.autoresizingMask = UIViewAutoresizingNone;
}

同时使用多个UITableView的更多相关文章

  1. 【转】基于 CoreText 实现的高性能 UITableView

    引起UITableView卡顿比较常见的原因有cell的层级过多.cell中有触发离屏渲染的代码(譬如:cornerRadius.maskToBounds 同时使用).像素是否对齐.是否使用UITab ...

  2. 基于 CoreText 实现的高性能 UITableView

    引起UITableView卡顿比较常见的原因有cell的层级过多.cell中有触发离屏渲染的代码(譬如:cornerRadius.maskToBounds 同时使用).像素是否对齐.是否使用UITab ...

  3. 基于 CoreText 实现高性能 UITableView

    引起UITableView卡顿比较常见的原因有cell的层级过多.cell中有触发离屏渲染的代码(譬如:cornerRadius.maskToBounds 同时使用).像素是否对齐.是否使用UITab ...

  4. iOS UITableView 与 UITableViewController

    很多应用都会在界面中使用某种列表控件:用户可以选中.删除或重新排列列表中的项目.这些控件其实都是UITableView 对象,可以用来显示一组对象,例如,用户地址薄中的一组人名.项目地址. UITab ...

  5. UITableView(二)

    #import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...

  6. iOS: 在UIViewController 中添加Static UITableView

    如果你直接在 UIViewController 中加入一个 UITableView 并将其 Content 属性设置为 Static Cells,此时 Xcode 会报错: Static table ...

  7. iOS 编辑UITableView(根据iOS编程编写)

    上个项目我们完成了 JXHomepwner 简单的应用展示,项目地址.本节我们需要在上节项目基础上,增加一些响应用户操作.包括添加,删除和移动表格. 编辑模式 UITableView 有一个名为  e ...

  8. 使用Autolayout实现UITableView的Cell动态布局和高度动态改变

    本文翻译自:stackoverflow 有人在stackoverflow上问了一个问题: 1 如何在UITableViewCell中使用Autolayout来实现Cell的内容和子视图自动计算行高,并 ...

  9. iOS - UITableView中Cell重用机制导致Cell内容出错的解决办法

    "UITableView" iOS开发中重量级的控件之一;在日常开发中我们大多数会选择自定Cell来满足自己开发中的需求, 但是有些时候Cell也是可以不自定义的(比如某一个简单的 ...

随机推荐

  1. Codevs 1282 约瑟夫问题

    1282 约瑟夫问题  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题解       题目描述 Description 有编号从1到N的N个小朋友在玩一种 ...

  2. uoj#79. 一般图最大匹配(带花树)

    传送门 带花树 不加证明的说一下过程好了:每次从一个未匹配点\(S\)出发bfs,设\(S\)为\(1\)类点,如果当前点\(v\)在本次bfs中未经过,分为以下两种情况 1.\(v\)是未匹配点,那 ...

  3. AVAudioPlayer 如何在页面呈现之后按需初始化

    在页面中按需初始化 AVAudioPlayer 很多时候我们需要根据页面上内容的情况创建 AVAudioPlayer 对象,已达到降低无谓资源占用等目的.下面我们来看一段代码看起来正确的代码: ove ...

  4. C 语言实例 - 输出当前文件执行代码

    C 语言实例 - 输出当前文件执行代码 输出当前文件执行代码,__FILE__ 为当前执行的文件常量. 实例 #include <stdio.h> int main() { FILE *f ...

  5. Eclipse mybatis中XML的自动提示

    1. 从mybatis-3.1.1.jar中解压出dtd文件 2. 3. 复制红线处内容 4. 将上步中内容粘贴到key中

  6. android webview 视频相关

    //设置为false则可以自动播放页面音视频 页面必须设置autoplay或者调用document.getElementById("video").play(); $(" ...

  7. Azure service bus Topic基本用法

    我们在升级一个POS系统的时候,决定使用微软公有云计算平台下的Azure ServiceBus 进行POS客户端与服务器的交互. 本文主要时作者在学习使用 Azure SDK for .NET 操作由 ...

  8. ubuntu管理apt包的常用命令

    安装 apt-get install nginx #安装 apt-get install nginx --reinstall #重新安装 删除 apt-get remove nginx #卸载 apt ...

  9. 玲珑杯”ACM比赛 Round #4 1054 - String cut 暴力。学到了扫描的另一种思想

    http://www.ifrog.cc/acm/problem/1054 问删除一个字符后的最小循环节是多少. 比赛的时候想不出,不知道怎么暴力. 赛后看了别人代码才晓得.唉,还以为自己字符串还不错, ...

  10. compare `lvs/haproxy/nginx`

    特性 LVS Nginx Haproxy 工作层 四层(传输层TCP/UDP) 七层(应用层) 四层.七层 应用范围 基于TCP和UDP之上的协议都可以 Http.mail HTTP.TCP之上应用 ...