私は表示するためにdequeueReusableCellWithIdentifierを使用しているカスタムセルを持っています。これはplistファイルによって作成されます。私はここや他の場所で発見したガイドのすべてに基づいて適切にセグエするために、これを取得に取り組んでいますカスタムセルSegueセカンダリビューコントローラへのデータの送信
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("challengeCell", forIndexPath: indexPath) as! ChallengeCell
// set labels
cell.ChallengeLabel.text = challengeLevels[indexPath.row].uppercaseString
cell.ChallengeMaxPoints.text = "Score: " + challengeMaxScore[indexPath.row]
cell.SizeLabel.text = "Size: " + challengeSize[indexPath.row]
// set color
cell.ChallengeLabel.textColor = UIColor.whiteColor()
cell.ChallengeMaxPoints.textColor = UIColor.whiteColor()
cell.SizeLabel.textColor = UIColor.whiteColor()
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return challengeLevels.count
}
:
関連する変数があたり、このクラスChallengeListViewControllerで上に割り当てられているfunc tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
challengeSelected = indexPath.row
print("Send selected \(challengeSelected)")
self.performSegueWithIdentifier("ChallengeSelected", sender: challengeSelected);
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "ChallengeSelected") {
if let nextViewController = (segue.destinationViewController as? LevelListViewController)
{
print(challengeSelected)
nextViewController.selectedChallenge = challengeSelected
}
}
}
下記:
var challengeSelected: Int = 0
コードはエラーになりませんが、値を送信しません。下記のとおり対応のViewControllerリスト:
class LevelListViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var selectedChallenge: Int = 0
let getLevels = LevelList(challengeNumber: 1)
var puzzleLevels: [String] = []
var solvedStatus: [String] = []
// UITableViewDataSource for Table
override func viewDidLoad() {
super.viewDidLoad()
print ("Receive Selected: \(selectedChallenge)")
//Initalize Arrays
var x = 0
for _ in getLevels.levels {
puzzleLevels.append(getLevels.levels[x][0] as! String)
x = x + 1
}
//print (puzzleLevels.count)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func prefersStatusBarHidden() -> Bool {
return true
}
//How to create a table
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("levelListCell", forIndexPath: indexPath) as! LevelListCell
// set labels
cell.levelNameLabel.text = puzzleLevels[indexPath.row].uppercaseString
cell.levelStatusLabel.text = "Not Solved"
// set color
cell.levelNameLabel.textColor = UIColor.whiteColor()
cell.levelStatusLabel.textColor = UIColor.whiteColor()
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return puzzleLevels.count
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("selected \(indexPath.row)")
}
}
編集:seguesの
スクリーンショットは、以下の次の:
Segue Screen Shot #1 Segue Screen Shot #2
ヘルプは本当に感謝です。私は困惑している。
は、
リッチ
challengeSelectedは印刷されていますか? – Shades
はい。選択した送信は3で受信は0です。これは、Segueがクリックの前に呼び出されてから再び呼び出されないようなものです。下のサンプル出力。 0 受信選択:0 選択送信3 2016-08-29 17:16:44.517 Word Master [22766:822280]>のウィンドウがのビューのウィンドウと等しくない! –
Apocal
「選択した送信\(challengeSelected)」が最初に印刷された行になります。あなたのストーリーボードにセグがありますか? – Shades