UITableView相关技术点

一 Tableview篇
//接口代理:
@interface XXXViewController :UIViewController<UITableViewDataSource,UITableViewDelegate>
{
    UITableView *tableContent;
    // 绑定的数据集合
    NSMutableArray *dataitems;
}

//初始化
-(void)initTable{
    // 初始化frame
    tableContent=[[UITableView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
    // 设置table不可拖动
    //tableContent.scrollEnabled=NO;
    tableContent.backgroundColor=[UIColor clearColor];
    // 代理
    tableContent.delegate =self;
    // 数据源
    tableContent.dataSource=self;
    // 添加到根视图
    [self.view addSubview:tableContent];
    // 不显示格线
    tableContent.separatorStyle=UITableViewCellSeparatorStyleNone;
}
<p class="p1">二 Section篇</p><p class="p1">// 节数</p><p class="p1">-(<span class="s1">NSInteger</span>)numberOfSectionsInTableView:(<span class="s1">UITableView</span> *)tableView<span style="font-family: Arial, Helvetica, sans-serif;">{</span></p><p class="p1">    <span class="s2">if</span>(tableView==<span class="s3">tableContent</span>)</p><p class="p1">        <span class="s2">return</span> <span class="s4">1</span>;</p><p class="p1">    <span class="s2">else</span>{</p><p class="p1">        <span class="s2">return</span> <span class="s4">4</span>;</p><p class="p1">    }</p><p class="p1">}</p><p class="p1"></p><p class="p1">// 每节行数</p><p class="p1">-(<span class="s1">NSInteger</span>)tableView:(<span class="s1">UITableView</span> *)tableView numberOfRowsInSection:(<span class="s1">NSInteger</span>)section{</p><p class="p1">    <span class="s2">if</span>(tableView==<span class="s3">tableContent)</span></p><p class="p1">        <span class="s2">return</span> <span class="s3">dataitems</span>.<span class="s4">count</span>;</p><p class="p1">    <span class="s2">else</span>{</p><p class="p1">        <span class="s2">switch</span> (section) {</p><p class="p1">            <span class="s2">case</span> <span class="s5">0</span>:</p><p class="p1">                <span class="s2">return</span> <span class="s5">1</span>;</p><p class="p1">            <span class="s2">case</span> <span class="s5">1</span>:</p><p class="p1">                <span class="s2">return</span> <span class="s5">7</span>;</p><p class="p1">            <span class="s2">case</span> <span class="s5">2</span>:</p><p class="p1">                <span class="s2">return</span> <span class="s5">1</span>;</p><p class="p1">            <span class="s2">case</span> <span class="s5">3</span>:</p><p class="p1">                <span class="s2">return</span> <span class="s5">1</span>;</p><p class="p1">            <span class="s2">default</span>:</p><p class="p1">                <span class="s2">break</span>;</p><p class="p1">        }</p><p class="p1">    }</p><p class="p1">    <span class="s2">return</span> <span class="s5">1</span>;</p><p class="p1">}</p><p class="p1"></p><p class="p1">-(<span class="s1">CGFloat</span>)tableView:(<span class="s1">UITableView</span> *)tableView heightForHeaderInSection:(<span class="s1">NSInteger</span>)section{</p><p class="p1">    <span class="s2">if</span>(tableView==<span class="s3">tableContent</span>)</p><p class="p1">    {</p><p class="p1">        <span class="s2">return</span> <span class="s4">15</span>;</p><p class="p1">    }</p><p class="p1">    <span class="s2">else</span></p><p class="p1">    {</p><p class="p1">        <span class="s2">switch</span> (section) {</p><p class="p1">            <span class="s2">case</span> <span class="s4">0</span>:</p><p class="p1">                <span class="s2">return</span> <span class="s4">100</span>;</p><p class="p1">            <span class="s2">case</span> <span class="s4">1</span> :</p><p class="p1">                <span class="s2">return</span> <span class="s4">30</span>;</p><p class="p1">            <span class="s2">case</span> <span class="s4">2</span>:</p><p class="p1">                <span class="s2">return</span> <span class="s4">30</span>;</p><p class="p1">            <span class="s2">case</span> <span class="s4">3</span>:</p><p class="p1">                <span class="s2">return</span> <span class="s4">0</span>;</p><p class="p1">            <span class="s2">default</span>:</p><p class="p1">                <span class="s2">break</span>;</p><p class="p1">        }</p><p class="p1">    }</p><p class="p1">    <span class="s2">return</span> <span class="s4">15</span>;</p><p class="p1">}</p><p class="p1">-(<span class="s1">CGFloat</span>)tableView:(<span class="s1">UITableView</span> *)tableView heightForFooterInSection:(<span class="s1">NSInteger</span>)section{</p><p class="p1">    <span class="s2">if</span>(tableView==<span class="s3">tableContent</span>)</p><p class="p1">    {</p><p class="p1">        <span class="s2">return</span> <span class="s4">100</span>;</p><p class="p1">    }</p><p class="p1">    <span class="s2">return</span> <span class="s4">0</span>;</p><p class="p1">}</p><p class="p1">-(<span class="s1">UIView</span> *)tableView:(<span class="s1">UITableView</span> *)tableView viewForFooterInSection:(<span class="s1">NSInteger</span>)section{</p><p class="p1">    <span class="s2">if</span>(tableView==<span class="s3">tableContent</span>)</p><p class="p1">    {</p><p class="p1">        <span class="s1">UIView</span> *view=[[<span class="s1">UIView</span> <span class="s5">alloc</span>] <span class="s5">initWithFrame</span>:<span class="s5">CGRectMake</span>(<span class="s4">0</span>, <span class="s4">0</span>, <span class="s6">SCREEN_WIDTH</span>, <span class="s4">100</span>)];</p><p class="p2"><span class="s7">        view.</span>backgroundColor<span class="s7">=[</span>UIColor<span class="s7"> </span><span class="s5">clearColor</span><span class="s7">];</span></p><p class="p1">        <span class="s2">return</span> view;</p><p class="p1">    }</p><p class="p1">    <span class="s2">else</span>{</p><p class="p1">        <span class="s2">return</span> <span class="s2">nil</span>;</p><p class="p1">    }</p><p class="p1">}</p><p class="p1">-(<span class="s1">UIView</span> *)tableView:(<span class="s1">UITableView</span> *)tableView viewForHeaderInSection:(<span class="s1">NSInteger</span>)section{</p><p class="p1">    <span class="s2">if</span>(tableView==<span class="s3">tableContent</span>)</p><p class="p1">    {</p><p class="p1">        <span class="s1">UIView</span> *view=[[<span class="s1">UIView</span> <span class="s5">alloc</span>] <span class="s5">initWithFrame</span>:<span class="s5">CGRectMake</span>(<span class="s4">0</span>, <span class="s4">0</span>, <span class="s6">SCREEN_WIDTH</span>, <span class="s4">15</span>)];</p><p class="p2"><span class="s7">        view.</span>backgroundColor<span class="s7">=[</span>UIColor<span class="s7"> </span><span class="s5">clearColor</span><span class="s7">];</span></p><p class="p1">        <span class="s2">return</span> view;</p><p class="p1">    }</p><p class="p1">    <span class="s2">else</span>{</p><p class="p1">        <span class="s1">UIView</span> *view=[[<span class="s1">UIView</span> <span class="s5">alloc</span>] <span class="s5">initWithFrame</span>:<span class="s5">CGRectMake</span>(<span class="s4">0</span>, <span class="s4">0</span>, <span class="s6">SCREEN_WIDTH</span>, <span class="s4">30</span>)];</p><p class="p1">        view.<span class="s1">backgroundColor</span>=<span class="s6">DEFAULT_COLOR</span>;</p><p class="p1">        <span class="s1">UILabel</span> * label=[[<span class="s1">UILabel</span> <span class="s5">alloc</span>] <span class="s5">initWithFrame</span>:<span class="s5">CGRectMake</span>(<span class="s4">10</span>, <span class="s4">0</span>, <span class="s4">110</span>, <span class="s4">30</span>)];</p><p class="p1">        <span class="s2">if</span>(section==<span class="s4">0</span>)</p><p class="p1">        {</p><p class="p1">            <span class="s3">topview</span>=[[<span class="s1">UIView</span> <span class="s5">alloc</span>] <span class="s5">initWithFrame</span>:<span class="s5">CGRectMake</span>(<span class="s4">0</span>, <span class="s4">0</span>, <span class="s6">SCREEN_WIDTH</span>, <span class="s4">100</span>)];</p><p class="p2"><span class="s7">            </span><span class="s3">topview</span><span class="s7">.</span>backgroundColor<span class="s7">=[</span>UIColor<span class="s7"> </span><span class="s5">blackColor</span><span class="s7">];</span></p><p class="p1">            <span class="s3">topview</span>.<span class="s1">alpha</span>=<span class="s4">0</span>;</p><p class="p1">            <span class="s2">return</span> <span class="s3">topview</span>;</p><p class="p1">        }</p><p class="p1">        label.<span class="s1">font</span>=<span class="s6">FONT</span>(<span class="s4">18</span>);</p><p class="p1">        <span class="s2">if</span>(section==<span class="s4">1</span>){</p><p class="p1">            label.<span class="s1">text</span>=<span class="s8">@"</span><span class="s9">默认选项</span><span class="s8">"</span>;</p><p class="p1">        }</p><p class="p1">        <span class="s2">else</span> <span class="s2">if</span>(section==<span class="s4">2</span>){</p><p class="p1">            label.<span class="s1">text</span>= <span class="s8">@"</span><span class="s9">自定义操作</span><span class="s8">"</span>;</p><p class="p1">        }</p><p class="p1">        <span class="s2">else</span></p><p class="p1">        {</p><p class="p1">            <span class="s2">return</span> <span class="s2">nil</span>;</p><p class="p1">        }</p><p class="p1">        [view <span class="s5">addSubview</span>:label];</p><p class="p1">        <span class="s2">return</span> view;</p><p class="p1">    }</p><p class="p1">}</p>

//去掉UItableview headerview黏性(sticky)

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

    CGFloat sectionHeaderHeight = 40;

    if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {

        scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);

    } else if (scrollView.contentOffset.y>=sectionHeaderHeight) {

        scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);

    }

}

<p class="p1">三 CELL篇</p><p class="p1">// <span class="s1">行高</span></p><p class="p2">- (<span class="s2">float</span>)tableView:(<span class="s3">UITableView</span> *)tableView heightForRowAtIndexPath:(<span class="s3">NSIndexPath</span> *)indexPath {</p><p class="p2">    <span class="s2">id</span> model;</p><p class="p2">    <span class="s3">NSString</span> *key = <span class="s4">sortedAllItemskeys</span>[indexPath.<span class="s3">section</span>];</p><p class="p2">    model = [<span class="s4">sectionItems</span> <span class="s5">objectForKey</span>:key][[indexPath <span class="s5">row</span>]];</p><p class="p3"><span class="s6">    </span><span class="s2">if</span><span class="s6">([</span><span class="s7">NullString</span><span class="s6">([model </span>valueForKey<span class="s6">:</span><span class="s2">self</span><span class="s6">.</span><span class="s4">setting</span><span class="s6">.</span><span class="s4">typeRowName</span><span class="s6">]) </span>isEqualToString<span class="s6">:</span><span class="s8">@"photo"</span><span class="s6">])</span></p><p class="p2">    {</p><p class="p2">        <span class="s2">return</span> <span class="s9">100</span>;</p><p class="p2">    }</p><p class="p4"><span class="s6">    </span><span class="s2">return</span><span class="s6"> </span><span class="s2">self</span><span class="s6">.</span>setting<span class="s6">.</span>cellHeight<span class="s6">;</span></p><p class="p2">}</p><p class="p1">// <span class="s1">行</span></p><p class="p2">- (<span class="s3">UITableViewCell</span> *)tableView:(<span class="s3">UITableView</span> *)tableView cellForRowAtIndexPath:(<span class="s3">NSIndexPath</span> *)indexPath {</p><p class="p2">    <span class="s2">static</span> <span class="s3">NSString</span> *CellWithIdentifier = <span class="s8">@"Cell"</span>;</p><p class="p2">    <span class="s2">id</span> model;</p><p class="p2">    <span class="s3">NSString</span> *key = <span class="s4">sortedAllItemskeys</span>[indexPath.<span class="s3">section</span>];</p><p class="p2">    model = [<span class="s4">sectionItems</span> <span class="s5">objectForKey</span>:key][[indexPath <span class="s5">row</span>]];</p><p class="p2">    <span class="s3">UITableViewCell</span> *cell = [tableView <span class="s5">dequeueReusableCellWithIdentifier</span>:CellWithIdentifier];</p><p class="p2">    <span class="s2">if</span> (cell == <span class="s2">nil</span>) {</p><p class="p2">        cell = [[<span class="s3">UITableViewCell</span> <span class="s5">alloc</span>]<span class="s5">init</span>];</p>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值