2015-04-30 1 views
-1

я уже реализовал мою кнопку:UIBarButtonItem разбивает мое заявление в Swift

import UIKit 

class ShareButton { 

    var status_title: String! 
    var status_content: String! 

    var button: UIBarButtonItem! 

    init(status_title: String ,status_content: String) { 
     button = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Action, target: self, action: Selector("btn"))   
     self.status_title = status_title 
     self.status_content = status_content 
    } 

    func btn() 
    { 
     let application = UIApplication.sharedApplication() 
     var can_open = application.canOpenURL(NSURL(string: "whatsapp://")!) 
     if (can_open) { 
      let url_string = "whatsapp://send?text=" + status_content 
      let url: NSURL = NSURL(string: url_string)! 
      application.openURL(url) 
     } 
     else { 
      let alert = UIAlertView() 
      alert.title = "You don't have WhatsApp" 
      alert.message = "You need WhatsApp to share this status" 
      alert.addButtonWithTitle("Got it") 
      alert.show() 
     } 
    } 
} 

Но когда я нажал на кнопку, сбои приложений ...

Я буду рад за некоторую помощь, Большое спасибо за вашу помощь!

http://i.stack.imgur.com/tIVqn.png

+6

Никогда не говорите, что приложение «сбой». Скажите, в какой строке произошел сбой, и что такое консольное сообщение. – matt

+0

Спасибо! Я изменю его. – Etgar

ответ

0

Проблема заключается в том, что ваш класс ShareButton не вытекает из NSObject. Поэтому его внутренние элементы невидимы для Cocoa, которые не могут вызвать в нее - он не может найти ваш метод btn. У вас есть два варианта:

  • Выведите ShareButton из NSObject: class ShareButton : NSObject {

  • Или выставить btn на Objective-C: @objc func btn() {

+0

На самом деле у вас есть еще два выбора, но я не буду здесь говорить, что они собой представляют. Для получения дополнительной информации см. Обсуждение этой темы в моей книге: http://www.apeth.com/swiftBook/apa.html#_selectors – matt

+0

Я пробовал ... Это не работает для меня :( – Etgar

0

После того, как была очень похожая проблема, дело в том, что работал для меня, добавляя двоеточие в селектор. Попробуйте изменить:

кнопка = UIBarButtonItem (barButtonSystemItem: UIBarButtonSystemItem.Action, цель: самостоятельно, действие: Selector ("БТН"))

в

кнопка = UIBarButtonItem (barButtonSystemItem : UIBarButtonSystemItem.Action, target: self, action: Selector ("btn:"))

+0

I попробовал это раньше, спасибо за помощь, но это не работает :( – Etgar