2016-11-19 10 views
0

私のプロジェクトで助けてくれませんか? 私はTableViewを持ち、すべてのセルにImageViewとTextViewを持っています。これらのデータはBackendless DataBaseと2つのButtonsで共有されています。Swift 3、Xcode 8を使用して、私のテーブルビューのセルで共有ボタンやボタンを操作する方法

IanはBackendless DataBaseを使用しています。これは私のプロジェクトでIa​​mが使用しているコードです。

import UIKit 
    import Social 
    import SDWebImage 

    class NewsTable: UITableViewController { 

    @IBOutlet var newstable: UITableView! 

    var mydata = [TestTable]() 
    let backendless = Backendless() 

    override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 

    newstable.dataSource=self 
    newstable.delegate=self 

} 

override func viewDidAppear(_ animated: Bool) { 
    loaddatawithquery() 
} 


override func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 

} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return mydata.count 

} 

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
if let cell = tableView.dequeueReusableCell(withIdentifier: "newscell") as? NewsCell{ 

      let ImgURL = URL(string : self.mydata[(indexPath as NSIndexPath).row].ImgURL!) 
    let Desc = self.mydata[(indexPath as NSIndexPath).row].Desc! 
    cell.textnews.text = Desc 
    cell.imgnews.sd_setImage(with: ImgURL) 

    return cell 

} 
else{ 

let cell = NewsCell() 
let ImgURL = URL(string : self.mydata [(indexPath as NSIndexPath).row].ImgURL) 
let Desc = self.mydata[(indexPath as NSIndexPath).row].Desc 

cell.imgnews.sd_setImage(with: ImgURL) 

cell.textnews.text = Desc! 


    cell.share.tag = indexPath.row 
    cell.share.addTarget(self, action: #selector(NewsTable.shareBu(_:)), for: .touchUpInside) 




return cell 
} 


    } 
    func loaddatawithquery() 

    { 


    _ = "ImgURL" 
    _ = "Desc" 
    let dataQuery = BackendlessDataQuery() 
    dataQuery.queryOptions.pageSize=50 



    backendless.data.of(TestTable.ofClass()).find(dataQuery,response: {(result: BackendlessCollection?) -> Void in 
     let data = result?.getCurrentPage() 

     for obj in data! as! [TestTable] { 

      self.mydata.append(obj) 




      self.tableView.reloadData() 
     } 
     }, 
    error: { (fault: Fault?) -> Void in 

    let alert = UIAlertController(title: "انتباه", message:"يرجى الاتصال بالانترنيت", preferredStyle: .alert) 

    alert.addAction(UIAlertAction(title: "OK", style: .default) { _ in 

    let viewController = self.storyboard?.instantiateViewController(withIdentifier: "main") as! ViewController 

self.navigationController?.pushViewController(viewController, animated: true) 
}) 

    self.present(alert, animated: true){} 


    }) 
} 

@IBAction func shareBu(_ sender: AnyObject) { 

    let myactivity = self.mydata[sender.tag] 

    let firstActivity = "\(myactivity)" 

    let activity : UIActivityViewController = UIActivityViewController(activityItems: [firstActivity], applicationActivities: nil) 

    self.present(activity, animated: true, completion: nil) 




} 


} 
+0

あなたは 'IBAction'するボタンの機能を設定しているのはなぜ? – Rikh

+0

Iamはそれを動作させようとしています。ボタンを機能させるためのソリューションはありますか? –

+0

'@ IBAction'を削除してみてください。メソッドの中にブレークポイントを入れて、それがうまくいくはずです(それが以前でなかった場合) – Rikh

答えて

0

選択のためのあなたの方法は、同じクラスにあるようなコード

cell.share.addTarget(self, action: #selector(shareBu(_:)), for: .touchUpInside) 

のこの行で

cell.share.addTarget(self, action: #selector(NewsTable.shareBu(_:)), for: .touchUpInside) 

を交換してください。

もまた、他の条件でコードが呼び出さなっていることを確認してください@IBAction

を使用しての要件がないこの

func shareBu(_ sender: AnyObject) { 

@IBAction func shareBu(_ sender: AnyObject) { 

を変更。

編集

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
let cell = tableView.dequeueReusableCell(withIdentifier: "newscell") as? NewsCell{ 

      let ImgURL = URL(string : self.mydata[(indexPath as NSIndexPath).row].ImgURL!) 
    let Desc = self.mydata[(indexPath as NSIndexPath).row].Desc! 
    cell.textnews.text = Desc 
    cell.imgnews.sd_setImage(with: ImgURL) 
cell.share.tag = indexPath.row 
    cell.share.addTarget(self, action: #selector(shareBu(_:)), for: .touchUpInside) 
    return cell 
} 
+0

助けてくれてありがとうございましたが、まだ動作していません。私はあなたが何を意味するのかを立証していません(else条件のコードが呼び出されていることを確認してください)。もっと説明してください。ありがとう@ラジャット –

+0

ボタンのセレクタを追加している箇所にブレークポイントを追加し、呼び出されているかどうかを確認してください。 – Rajat

+0

@ Rajat –

関連する問題