IOS开发之表视图的可重用对象

       在iOS 6之后,表视图中有两种子视图采用可重用对象设计,它们是表视图单元格(UITableViewCell)和表视图节头节脚视图(UITableViewHeaderFooterView)。下面易速科技小编就带大家一起来了解一下。

       1、表视图单元格

       表视图单元格的重用方法有两个:dequeueReusableCellWithIdentifier:方法和 dequeueReusableCellWithIdentifier:forIndexPath:方法。

       通过dequeueReusableCellWithIdentifier:方法,可以用标识符从表视图中获得可重用单元格,模式代码如下:

       let cellIdentifier = "CellIdentifier"

       var cell:UITableViewCell! =

       tableView.dequeueReusableCellWithIdentifier(cellIdentifier)

        as? UITableViewCell

       if (cell == nil) {

        cell = UITableViewCell(style: UITableViewCellStyle.Default,

        reuseIdentifier:cellIdentifier)

       }        

       static NSString *CellIdentifier = @"CellIdentifier";

       UITableViewCell *cell = [tableView

        dequeueReusableCellWithIdentifier:CellIdentifier];

       if (cell == nil) {

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault

        reuseIdentifier:CellIdentifier];

        } 

       要在表视图数据源的tableView:cellForRowAtIndexPath:方法中使用可重用单元格设计,首先通过

       dequeueReusableCellWithIdentifier:方法从表视图中找,如果cell为空,则需要使用initWithStyle:reuseIdentifier:构造器创建。 

       dequeueReusableCellWithIdentifier:forIndexPath:方法是iOS 6之后提供的方法。与上一个方法相比,该方法的签名多了forIndexPath:部分。它可以通过指定单元格位置获得可重用单元格,不需要判断,模式代码如下:

       let CellIdentifier = "CellIdentifier"

       var cell:UITableViewCell! = tableView.dequeueReusableCellWithIdentifier

        (CellIdentifier, forIndexPath:indexPath) as? UITableViewCell

       static NSString *CellIdentifier = @"CellIdentifier";

       UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:

        CellIdentifier forIndexPath:indexPath]; 

       这个方法的使用有一些限制,它只能应用于iOS故事板中,并且在故事板中设计表视图单元格后,指定表视图单元格为动态的,Identifier属性设置为cellIdentifier。图1设定了表视图单元格的属性。

图1、表视图中的可重用单元格

       2、表视图节头节脚视图

       UITableViewHeaderFooterView也是iOS 6之后新加的内容,节头和节脚也会反复出现,它也需要可重用设计。

       使用表视图的dequeueReusableHeaderFooterViewWithIdentifier:方法获得UITableViewHeaderFooterView对象后,如果没有可重用的UITableViewHeaderFooterView对象,则使用initWithReuseIdentifier:构造器创建。其模式代码如下:

       override func tableView(tableView: UITableView, viewForHeaderInSection

        section:Int) -> UIView? {

        let headerReuseIdentifier = "TableViewSectionHeaderViewIdentifier"

        var sectionHeaderView :UITableViewHeaderFooterView!

        = tableView.dequeueReusableHeaderFooterViewWithIdentifier

        (headerReuseIdentifier) as? UITableViewHeaderFooterView

        if sectionHeaderView == nil {

        sectionHeaderView

        = UITableViewHeaderFooterView(reuseIdentifier:

        headerReuseIdentifier)

        }

        ......

        return sectionHeaderView

       }        

       - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:

        (NSInteger)section

       {

        static NSString *headerReuseIdentifier =

        @"TableViewSectionHeaderViewIdentifier";

        UITableViewHeaderFooterView *sectionHeaderView = [tableView

        dequeueReusableHeaderFooterViewWithIdentifier:

        headerReuseIdentifier];

        if (!sectionHeaderView) {

        sectionHeaderView = [[UITableViewHeaderFooterView alloc]

        initWithReuseIdentifier:headerReuseIdentifier];

        }

        ......

        return sectionHeaderView;

       }

       需要在表视图委托协议UITableViewDelegate中的tableView:viewForHeaderInSection:方法中使用可重用对象设计。 

       关于IOS开发中表视图的可重用对象就先介绍到这里,了解更多关于南昌APP开发方面的知识,欢迎继续关注本公司网站!

提供全面的搜索引擎优化学习交流,专注网站优化和搜索引擎营销推广服务。用专业的SEO技术为企业网站提升关键词排名,让你的网站不仅满足用户体验还要适合搜索引擎优化规则。
易速网站优化公司 » IOS开发之表视图的可重用对象
享更多特权,立即登录下载海量资源
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡