2016-06-09 3 views
0

TableViewController에서 Container View에 포함 된 다른 TableViewController으로 데이터를 전달하는 데 문제가 있습니다. 내가 prepareForSegue의 데이터를 전달할 때 나는 TableViewControllerEmbeddedInContainer에 유형 UIViewController의 "캐스팅 할 수 없습니다 값을 맞고. 나는 용기 ViewController의 파일을 만들고 거기에 아무것도 잡을해야합니까? 어떤 도움을 크게 감사합니다.TableViewController의 데이터를 컨테이너에 포함 된 다른 TableViewController로 전달

첫 TableViewController에서 enter image description here

:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

self.myFavText = "My Favorite Text" 
self.performSegueWithIdentifier("favDetails", sender: self) 

} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
let myDetails = segue.destinationViewController as! TableViewControllerEmbeddedInContainer 
details.myFav = self.myFavText 

} 
+0

목적지의 VC는 컨테이너 VC하지 포함 된 VC입니다 도움이 될 수 있습니다. 어떻게 든 컨테이너 vc에서 임베디드 vc를 추출하고 텍스트를 직접 설정해야합니다. 또는 컨테이너 뷰를 사용하여 마법을 수행했는지 확인할 수 있습니다. –

답변

1

kampbell411,

"나는 용기의 ViewController에 대한 파일을 만들고 거기에 아무것도 잡을해야합니까?"

답변 : 예.

는 "

대답 'TableViewControllerEmbeddedInContainer에있는 UIViewController'유형의 캐스팅 할 수 없습니다 값"나는 prepareForSegue의 데이터를 전달할 때 나는이 맞아 본 "SEGUE가 포함 UIContainerView의 ViewController를 가리키고 있기 때문에 당신은 캔트 및 하지의 ViewController가에 임베디드 :

는 해결 방법 :

은의 ViewController가 ContainerView을 수용하는 클래스를 만듭니다. 비 포함에 함께 IBOutlet 만들기 erView :

는 myContainer로 중급 클래스와보기로 전화 :

class Intermediate: UIViewController { 

    @IBOutlet var myContainer: UIView! 
    var value : String! 


    //catch the embeded segue get the ViewController reference lets call it as Testing 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     let test = segue.destinationViewController as! Testing 
     test.value = self.value 
    } 
} 

이 :)

+0

이것은 훌륭했습니다. 고마워요! – kelsheikh

+0

@ kampbell411 : 항상 환영합니다 :) –

0

사용이 코드,

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) { 
     self.myFavText = "My Favorite Text" 
     self.performSegueWithIdentifier("favDetails", sender: self) 

} 

Container ViewController 클래스의 값을 전달한 다음이 값을 TableViewControllerEmbeddedInContainer 클래스에 할당합니다.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){ 

    if (segue.identifier == "favDetails") { 

     var myDetails = segue.destinationViewController as! ContainerViewController 
     myDetails.myFav = self.myFavText 

    } 
} 

도움이 되길 바랍니다.

+0

답장을 보내 주셔서 감사합니다. ContainerViewController에서, 그 값을 잡기 위해서'var myFav : String! '을 가지고 있을까요? 나는 그것을 시도한 다음 가치를 할당하고 아무 것도 얻지 못했습니다. @Yyyappan – kelsheikh

+0

'prepareForSegue' 메소드에서 중단 점을 설정합니다. condition이 true 또는 false인지 확인합니다. –