UITableView相关技术点

来源:互联网 发布:静态多重网络怎么解决 编辑:程序博客网 时间:2024/06/06 05:58

一 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