2014-09-28 3 views
0

그래서 정적 데이터에 더 많거나 적은 참조하는 응용 프로그램을 만들려고하고 나는 스토리 보드에 두 TableViewControllers 설정이 내가 싶어 데이터PROPERTYLIST는 SEGUE와 함께 전달

를 저장하는 PLIST를 사용하고 있습니다 선택한 셀 rownumber 또는 해당 데이터를 다음보기로 전달 하시겠습니까?

내 초기 설정 : 내가 배열의 행 수를 계산하는 방법을 알아낼 수없는 이유

import UIKit 

var categoryNames:NSArray = [] 
var categorySelected:String = "" 

class ListForbTVC: UITableViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let path = NSBundle.mainBundle().pathForResource("listor", ofType: "plist") 
    let dict = NSDictionary(contentsOfFile: path!) 
    categoryNames = dict.objectForKey("Category") as NSArray 
    println(categoryNames.count) 

} 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

?

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

    return 13 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell 

cell.textLabel!.text = categoryNames[indexPath.row] as? String 

return cell 
} 

나는 실제로 SEGUE를 통해 값을 전달 무슨 추가해야합니까? 선택한 행의 인덱스를 전달하는 방법과 그 행의 실제 값을 전달하는 방법을 알고 있어야합니다.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 
if segue.identifier == "listData" { 

} 

어떻게 다음보기에서 정보를받을 수 있습니까?

obj-c 및 X-Code 5에서이 작업을 수행했지만 Swift에서이 작업을 수행하는 방법을 알 수 없습니다.

미리 감사드립니다.

+0

'categoryNames.count'가의 수를 설정, 당신의 prepareForSegue에 그런

class VC2 : UIViewController { var someString:String? override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) if (self.someString != nil) { println("Some string =\(self.someString)") } } } 

- 이런 일을 배열의 요소 - 이미 인쇄하고 있습니다. 데이터 전달에 관해서는 대상 뷰 컨트롤러 클래스에 속성을 선언하고 Objective C에서와 같이 설정하십시오. – Paulw11

+0

감사합니다. 바보 같은 이유 때문에 이전에 제대로 작동하지 않았다면 완벽하게 작동했습니다. 그래도 여전히 segue와 고투 :) – Noxious

답변

0

- 단순히

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 
    if segue.identifier == "listData" { 
     let destVC=segue.destinationViewController as VC2 
     destVC.someString="Some value" 
    } 
} 
0

신속한 답변을 업데이트했습니다. 확인해주십시오.

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
    if (segue.identifier == "segueTest") { 
    var svc = segue!.destinationViewController as secondViewController; 

    svc.toPass =data} 

} 

http://jamesleist.com/ios-swift-passing-data-between-viewcontrollers/ 나를 아직도 경우 얼굴의 문제를 알려 확인하시기 바랍니다.

당신은 단순히 두 번째 뷰 컨트롤러의 속성을 선언 할 수 있습니다
+0

나는 신속 하게이 일을하려고하고 실제로 구문을 알아낼 수 없다, 당신이 obj - c를 게시 우려 걱정까지? – Noxious

+0

업데이트 된 내 ans를 신속하게 봅니다. – Sandy

관련 문제