默认的UITableViewCell状态

use*_*462 1 uitableview ios swift xcode6

我创建了一个自定义UITableViewRowAction.因此,如果我通过UITableViewCell向左滑动,则会出现一个自定义按钮(没有自定义按钮,例如删除按钮).如果我按下这个自定义按钮,UIView会出现,但仍然会显示按下的按钮.按下按钮后,我想看到没有此按钮的UITableViewCell.你们中的某些人是否知道如何在Swift中做到这一点并想帮助我?谢谢你的回答.

截图:https://www.dropbox.com/s/8g04kcvswujsn71/stackQuestion.png?dl = 0

Jbr*_*son 6

我使用SWTableViewCell在我自己的应用程序中实现这些操作.看看它的伟大!

您可以像这样使用此类:

1.导入SWTableViewCell类

按照上面的链接或只是在github上搜索SWTableViewCell.下载zip(或使用可可豆荚,如果您熟悉它们).

打开解压缩的目录并找到PodsFile目录.将此目录的内容拖到项目中.这样做会导致Xcode要求创建桥接头.同意然后添加

#import "SWTableViewCell.h"
Run Code Online (Sandbox Code Playgroud)

到那个桥接头文件.如果你编译,你会得到一些Parse问题错误:期望的类型.要修复这些,只需添加

#import <UIKit/UIKit.h>
Run Code Online (Sandbox Code Playgroud)

到NSMutableArray + SWUtilityButtons.h.现在我们已经准备好摇滚了.

2.创建SWTableViewCell子类

好的,您可以按原样使用单元格,但很可能您希望将单元格超出简单的默认单元格外观.如果是这样,创建一个新的可可触摸类(在swift中)并使您的单元格成为子类SWTableViewCell.它应该如下所示:

import UIKit

class MySWCell: SWTableViewCell {

}
Run Code Online (Sandbox Code Playgroud)

如果你正在使用故事板,你可以在这个课程的桌面视图中制作你的单元格,连接任何插座/动作等.你需要做的所有可爱的事情,就像你需要它一样.

3.在TableView中使用子类

在这个例子中,我刚开始使用Master-Detail基础项目.您更改cellForRowAtIndexPath方法以使用新的自定义单元格:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as MySWCell

    let object = objects[indexPath.row] as NSDate
    cell.textLabel!.text = object.description  
    return cell
}
Run Code Online (Sandbox Code Playgroud)

虽然这很棒,但您可能想要添加右/左实用程序按钮,这就是我们执行所有操作的原因:

4.添加Utility按钮

你可以这样做cellForRowAtIndexPath,但更喜欢把它放在一个单独的函数中:

func getRightUtilityButtonsToCell()-> NSMutableArray{
    var utilityButtons: NSMutableArray = NSMutableArray()

    utilityButtons.sw_addUtilityButtonWithColor(UIColor.redColor(), title: NSLocalizedString("Delete", comment: ""))
    utilityButtons.sw_addUtilityButtonWithColor(UIColor.blueColor(), title: NSLocalizedString("Email", comment: ""))
    return utilityButtons
}
Run Code Online (Sandbox Code Playgroud)

现在使用此方法cellForRowAtIndexPath:

cell.rightUtilityButtons = self.getRightUtilityButtons();
Run Code Online (Sandbox Code Playgroud)

如果您在单元格上向左滑动,则会有两个按钮:

应该是什么样的

但是,这些按钮并没有做太多.我们需要遵守代表.

5.回应按钮

首先,告诉单元格您是其委托人.再次,cellForRowAtIndexPath添加此行:

cell.delegate = self;
Run Code Online (Sandbox Code Playgroud)

然后将类定义调整为:

class MasterViewController: UITableViewController, SWTableViewCellDelegate
Run Code Online (Sandbox Code Playgroud)

MasterViewController 将替换为您处理tableview数据源/委托的类的名称.

现在实现这个didTriggerRightUtilityButtonWithIndex功能:

func swipeableTableViewCell(cell: SWTableViewCell!, didTriggerRightUtilityButtonWithIndex index: Int) {
    if index == 0 {
        println("delete button")
    }else {
        println("print button")
    }
}
Run Code Online (Sandbox Code Playgroud)

现在你准备好了!你也可以告诉单元格做一些很酷的事情,比如在使用hideUtilityButtonsAnimated方法内部的didTriggerRightUtilityButtonWithIndex方法选择一个按钮后隐藏按钮:

cell.hideUtilityButtonsAnimated(true);
Run Code Online (Sandbox Code Playgroud)

当tableview滚动时,此函数将隐藏单元格:

func swipeableTableViewCellShouldHideUtilityButtonsOnSwipe(cell: SWTableViewCell!) -> Bool {
    return true
}
Run Code Online (Sandbox Code Playgroud)

玩得开心,这是一套很棒的课程!