2017-11-29 11 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 터치를 수행 할 수 있습니까? 예, 분명히 할 수 있습니다. 메일 애플 리케이션은 중요한 사건이다. (아마 당신이 가지고있는 문제는 3D 터치와 관련이 없습니다.) – matt

+0

이것에 대한 답장을 보내 주셔서 감사합니다. 나는 또한 같은 결론에 도달했고, 내가 그것을 보여주지 않았음에도 불구하고 이미 파이어베이스에서 정보를 얻었고 그것을 각 셀에 저장 했으므로 아무 것도 전달할 필요가 없다는 것을 발견했다. 몇 가지 코드를 바꿀 수 있었지만 이제는 작동합니다. 이 시간에 다시 한번 감사드립니다. –

+0

이것은 파이어베이스에 전혀 연결되어 있지 않다. – Fattie

답변

2

IBOutlet의 초기 뷰 컨트롤러의 라이프 사이클에 nil이다. 그들은 viewDidLoad 이후에만 0이 아닙니다. 기본적으로 암시 적으로 래핑되지 않으므로 초기화되기 전에 메시지를 보내면 언 래핑 된 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 
} 
}