将 Objective-C 函数调用翻译成 Swift

Translating Objective-C function call to Swift

这是我目前所拥有的...

func rightButtonItemsInRevealTableViewCell(revealTableViewCell: SWRevealTableViewCell!, handler:((Bool) -> (NSArray))!) {

    var item1: SWCellButtonItem = itemWithTitle("Delete", {
        (var success) in
            println("\(success)")
        }
    });

    item1.backgroundColor = UIColor.redColor();
    item1.tintColor = UIColor.whiteColor();
    item1.width = 75;

    return item1;
}

我发现 this 有点帮助,但我仍然遇到一些错误。

这是原来的Objective-C代码...

- (NSArray*)rightButtonItemsInRevealTableViewCell:(SWRevealTableViewCell *)revealTableViewCell {

    SWCellButtonItem *item1 = [SWCellButtonItem itemWithTitle:@"Delete" handler:^(SWCellButtonItem *item, SWRevealTableViewCell *cell)
    {
        NSLog( @"Delete");
    }];

    item1.backgroundColor = [UIColor redColor];
    item1.tintColor = [UIColor whiteColor];
    item1.width = 75;

    return @[item1];
}

这是在header声明中

+ (instancetype)itemWithTitle:(NSString*)title handler:(BOOL(^)(SWCellButtonItem *item, SWRevealTableViewCell* cell))handler;

以及.m文件中的定义

+ (instancetype)itemWithTitle:(NSString *)title handler:(BOOL(^)(SWCellButtonItem *, SWRevealTableViewCell *))handler 
{
    return [[SWCellButtonItem alloc] initWithTitle:title image:nil handler:handler];
}
func rightButtonItemsInRevealTableViewCell(revealTableViewCell : UITableViewCell) -> NSArray {

    var item1 : SWCellButtonItem = SWCellButtonItem("Delete", handler: ((item : SWCellButtonItem, cell : SWRevealTableViewCell) -> (Void) in {
            NSLog("delete")
        }))
    item1.backgroundColor = UIColor.redColor()
    item1.tintColor = UIColor.whiteColor()
    item1.width = 75
    return [item1];
}

希望我没有忘记任何东西,试试吧!

正确的解决方案是

let item : SWCellButtonItem = SWCellButtonItem(title:"Delete", handler:{(item:SWCellButtonItem!, cell:SWRevealTableViewCell!)->(Bool) in

        println("Delete handler")
        return false
    } )