2015-04-26 19 views
-3

我想將我的Objective C源代碼轉換爲swift,我已經搜索了很多塊來更改語法。如何在iOS中使用Swift聲明塊?

這裏是我想切換到斯威夫特我的目標C代碼:

class.h文件:

@property (nonatomic, copy) void (^tapBlock)(CGFlagsCell *); 

+ (NSString *)cellIdentifier; 

Class.m文件:

self.tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapCell)]; 

- (void)didTapCell { 
    self.tapBlock(self); 
} 
+0

我已將類方法轉換爲類func cellIdentifier() - > String { return「yourValue」 }請其他人幫助我。謝謝! –

+0

我沒有得到你想要的東西。 – BoilingLime

+0

@ BoilingLime我想將我的上述目標C代碼轉換爲Swift for Blocks。我的Objective C代碼是:@property(nonatomic,copy)void(^ tapBlock)(CGFlagsCell *); –

回答

0

在斯威夫特,塊,函數和閉包是相同的東西,它們具有相同的簽名並且可以互換。

所以這會給你這樣的事情

var tapBlock: CGFlagsCell -> Void 

就可以在參數添加括號(可選如果只有一個,建議如果有多個輸入參數)和周圍的返回類型(可選) :

var tapBlock: (CGFlagsCell) -> (Void) 
+0

非常感謝@AliSoftware的幫助...現在工作的很好,如果可能,你可以給我一些關於UITapGestureRecognizer的想法,因爲這是我自定義的UITableViewCell。 –

+0

再次感謝@AliSoftware ...但我不知道爲什麼投票,無論如何這將有助於其他程序員.. :) –

0

定義一個封閉類的變量:

var tapBlock: (parameterTypes) -> (returnType)

Swift Closures是可以在代碼中傳遞和使用的自包含功能塊。 Swift中的閉包與塊類似Objective-C