2017-11-29 14 views
-2

Firebaseから新しいコントローラのデータを取得するテーブルセルに3Dタッチを追加できますか?3Dタッチテーブルビュー? iOS、Swift

次のコントローラーに移動してFirebaseから正しいデータを取得すると、テーブルセルを押しただけで拡張子としてこのコードが表示されますが、ピークとポップを使用すると、変数利用できません。私が静的なテキストをファイアベースの配列から取得するのではなく、それを置くと同じようになる。

extension myVC: UIViewControllerPreviewingDelegate { 

func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) { 
    present(viewControllerToCommit, animated: true) 
} 


private func createDetailViewControllerIndexPath(indexPath: IndexPath) -> MainInfoVC { 

    let dataPop = self.posts[indexPath.row] 
    let infoPop = dataPop 

    let storyboard = UIStoryboard(name: "ShowAndComments", bundle: nil) 
    let vc = storyboard.instantiateViewController(withIdentifier: "MainInfoVC") as? MainInfoVC 

    vc?.descriptionLabel.text = infoPop.desc 

    return vc! 
} 

func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? { 
    guard let indexPath = tableView.indexPathForRow(at: location) else { return nil } 

    let detailViewController = createDetailViewControllerIndexPath(indexPath: indexPath) 
    return detailViewController 
} 
} 

私は..

vc?.descriptionLabel.text = "Some Text" 

て、myAppを最適化してコンパイルされたためにこれを変更する場合、私はまた、クラッシュを取得 - ステッピングが奇妙な動作をする可能性があり、変数が使用できない可能性があります。 (lldb)

enter image description here

+1

あなた自身が言ったように、Firebaseとは関係ありません。だから、タイトルやタグに入れてはいけません。したがって、次のような疑問が生じます。マスター・ディテール・アーキテクチャーのテーブル・ビュー・セルに対して3Dタッチを行うことはできますか?はい、明らかにそうすることができます。 Mailアプリは重要なポイントです。 (おそらく、あなたが持っている問題は3Dタッチとは関係ありません。) – matt

+0

これに対するあなたの応答ありがとう。私も同じ結論に達していました。私が火の基盤から情報を得て、それを表示していなくてもそれを各セルに保存したので、何も渡す必要はありませんでした。私はいくつかのコードを交換することができました、そして今は動作します。もう一度この時間をいただきありがとうございます。 –

+0

これはちょうどfirebaseに接続していません – Fattie

答えて

2

IBOutlet sが早期View Controllerのライフサイクルにおけるnilです。彼らはviewDidLoadの後にのみ非nilです。デフォルトでは暗黙的にアンラップされているので、初期化する前にメッセージを送ればアンラップされたnilクラッシュが発生します。

あなたはMainInfoVCStringプロパティを作成し、viewDidLoadからdescriptionLabeltextプロパティを設定する必要があります。

+0

ありがとうございました。私はいくつかのコードを交換することができましたし、これを働かせることができました、もう一度あなたに感謝します。 –

1

私はこれを理解することができました。私はすでにfirebaseからデータをダウンロードし、配列で保持していたので、コードを変更して動作させることができました。

extension myVC: UIViewControllerPreviewingDelegate { 

func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) { 
    let navigationController = UINavigationController(rootViewController: viewControllerToCommit) 
} 

func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? { 
    guard let indexPath = tableView.indexPathForRow(at: location) else { return nil } 

    let storyboard = UIStoryboard(name: "ShowAndComments", bundle: nil) 

    let vc = storyboard.instantiateViewController(withIdentifier: "MainInfoVC") as? MainInfoVC 

    let dataPop = self.posts[indexPath.row] 
    let platePop = dataPop.postKey 

    return vc 
} 
}