2017-11-16 3 views
0

私はプログラミングにおいて、新規で問題があります。私はテーブルビューで私の配列の解析を使用しています。行が選択されたら、私はtextViewに別のビューコントローラでsegueしたいです。テーブルビューはうまくいきますが、テキストをtextViewに取得できません。他のviewControllerのTableVCからtextViewへのパースアップ

tableVC:

import UIKit 
import Parse 
class ThirdTableVC: UITableViewController { 
@IBOutlet weak var refresherQuotes: UIRefreshControl! 
@IBOutlet var quoteTable: UITableView! 

var selectedQuote: PFObject? 
var quoteItems = [PFObject]() 

override func viewDidLoad() { 
    super.viewDidLoad() 

} 
@IBAction func updateQuotesResults(_ sender: UIRefreshControl) { 
    fetchQuotesData() 
} 

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 

    loadQuoteTexts(selectedQuote: selectedQuote) 
} 


override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

// MARK: - Table view data source 

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



    return 1 
} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 



    return quoteItems.count 
} 

func fetchQuotesData() { 
    let quotesQuery = PFQuery(className: "TotalTest") 
    quotesQuery.whereKey("Subcategory", equalTo: selectedQuote ?? nil) 
    quotesQuery.findObjectsInBackground { (objects, error) in 
     if let realCategoryObjects = objects { 
      self.quoteItems = realCategoryObjects 
      self.tableView.reloadData() 
      self.refresherQuotes.endRefreshing() 
     } 
    } 
} 


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let quoteCell = tableView.dequeueReusableCell(withIdentifier: "quoteCell", for: indexPath) 

    let quoteItem = quoteItems[indexPath.row] 
    let quoteUserTitle = quoteItem.object(forKey: "TextQuote") as? String 

    quoteCell.textLabel?.text = quoteUserTitle 

    return quoteCell 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "showQuoteDetail" { 
     if let indexPath = tableView.indexPathForSelectedRow { 
      let quoteobject = quoteItems[indexPath.row] as? NSDate 
      let quoteController = (segue.destination as! UINavigationController).topViewController as! DetailViewController 
      quoteController.detailItem = quoteobject 
      quoteController.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem 
      quoteController.navigationItem.leftItemsSupplementBackButton = true 
     } 
    } 
} 

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    print("Row tapped: \(indexPath.row)") 

    let selectedQuotes: PFObject = quoteItems[indexPath.row] 
    let FourthVC = self.storyboard?.instantiateViewController(withIdentifier: "FourthViewController") as! FourthViewController 
    FourthVC.fourthTextView.text = quoteItems[indexPath.row] as? String 
    self.navigationController?.pushViewController(FourthVC, animated: true) 


} 

func loadQuoteTexts(selectedQuote: PFObject!) { 

    let quoteQuery = PFQuery(className: "TotalQuote") 
    quoteQuery.whereKey("QuoteSubs", equalTo: selectedQuote ?? nil) 
    quoteQuery.includeKey("QuoteSubs") 

    quoteQuery.findObjectsInBackground { (result: [PFObject]?, error) in 
     if let searchQuoteResults = result { 

      self.quoteItems = searchQuoteResults 
      self.quoteTable.reloadData() 
     } 
    } 
} 
} 

どのように私はこれを変更できますか? TextViewと のViewController:

import UIKit 
import Parse 

class FourthViewController: UIViewController { 

var getQuote: PFObject? 

@IBOutlet weak var fourthTextView: UITextView! 
@IBOutlet weak var fourthLabel: UILabel! 


override func viewDidLoad() { 
    super.viewDidLoad() 
    fourthLabel.text! = getQuote as! String 
    fourthTextView.text! = getQuote as! String 
} 
} 

渡すテキストに

+0

** selectedQuotesをしましょうです:PFObject = quoteItems [indexPath.row] ** –

+0

nilを返しますが、私はあなたがあなたの 'selectedQuotes'オブジェクトは、あなたが期待するものである、あなたの'のtableView didSelectRowAt'機能でチェックする必要があり、@AlizainPraslaに同意しますそうである。また、 'prepareForSegue'関数は何をしていますか?それは同じで重複しようとしているようですか?彼らは両方とも呼ばれているのでしょうか、あなたが期待しているものではないでしょうか? – Terje

答えて

0

あなたはpushViewControllerを使用する場合FourthViewController は、あなたがそうあなたのVAR

var getText = String() 

を設定selectRowAt

let MainStory: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
let desVC = MainStory.instantiateViewController(withIdentifier: "FourthViewController") as! FourthViewController 

行なったし、今

desVC.getText = "here goes your text u want to pass" 

テキストを渡すには、そのようにそれを行います最終的に使用できる

self.navigationController?.pushViewController(desVC, animated: true) 

ので、それはあなたが以前あなただけのgetTextを使用する必要がFourthViewControllerにdesVC.getSomething

に追加するすべてのパラメータを渡します。

0

を助けてください問題は、あなたのprepareForSegueが実行されないことを実行して、pushViewControllerで別のビューから変更されていることです。

didSelectRowにはperformSegue(withIdentifier:sender:)に電話する必要があります。

詳細は、this questionを参照してください。

関連する問題