2015-08-26 53 views
0

我有一個從兩個自定義單元格xib文件加載的UITableView。 第二個包含一個UIButton從不同的類訪問uibutton動作Swift

但是因爲我已經爲xib添加了自定義類 - 它有自己的操作和功能,我無法從ViewController訪問。

我的目標是在自定義單元格在tableview中加載時對UIButton應用某些操作。

我的函數在ViewController中定義(因爲所有變量都在那裏),我的UIButton動作在定製類中定義爲xib

我該如何連接另一個?

謝謝

+0

這將是一個不錯的選擇,但您必須爲自定義單元xib分配一個單獨的類文件。 –

回答

2

您可以通過簡單發佈通知來實現此目的。

NSNotificationCenter.defaultCenter().postNotificationName("buttonClickedNotification", object: nil) 

從自定義類中的按鈕方法發佈此通知。你也可以通過使用對象參數傳遞任何數據(這裏它是零)。

並觀察viewController中的通知。

NSNotificationCenter.defaultCenter().addObserver(self, selector: "buttonClicked:", name: "buttonClickedNotification", object: nil) 

並在viewController中實現buttonClicked()方法。

func buttonClicked(data: NSNotification) 
{ 
    //If any data is passed get it using 
    let receivedData:NSDictionary = data.object as! NSDictionary //If data is of NSDictionary type. 
} 
0

寫一個委託方法。這將連接你的ViewController和Custom Class。你已經嘗試了什麼?

+2

請在您的解決方案中添加更多詳細信息。 –

2

這裏是溶液中迅速

如果你想在另一個類當一個事件發生在另一個類執行操作,那麼你必須在你的代碼中使用Protocols,讓你可以在另一個班級中執行此操作。

例如

聲明的協議這樣的類接口之前

protocol MyDelegateClass { 
    func btnAction() 
} 

定義的協議在你的類像這樣

var MyDelegateClass! = nil 

現在你的按鈕動作觸發接口像這樣的協議

@IBAction func btnProtocolAction(sender: AnyObject) { 
    [delegate btnAction]; 
} 

現在包括像這樣

class myActionClass: UIViewController, PopUpViewDelegate { 

現在班上協議的協議分配給這樣

myProtocolObject.delegate=self 

的MyDelegateClass對象還要定義您已宣佈MyDelegateClass像

func btnAction() { 
    print(@"This method will triggered"); 
} 

希望這可以幫助你。