Im Wesentlichen versuche ich 16 verschiedene Variablen zu erhalten, die von einem View-Controller an den anderen übergeben werden, aber nur die unteren 8 Gegnervariablen werden übergeben. Ich bin mir nicht sicher, was ich falsch mache oder warum nur die 8 (die "Gegner" gemeinsam haben) bestanden werden. Ich bin neu bei XCode, also ist alles, was mir helfen kann, großartig. Die Druckzeilen testeten, ob die Variablen gesendet wurden, wobei die erste nicht funktionierte und die zweite wie vorgesehen funktionierte.Ich versuche, Daten zwischen View-Controllern zu übergeben, aber nur die Hälfte meiner 16 Variablen bestehen?
//
// ThirdViewController.swift
// rally
//
// Created by GBernero on 12/6/16.
// Copyright © 2016 GBernero. All rights reserved.
//
import UIKit
class ThirdViewController: UIViewController {
@IBOutlet weak var emptyTennisCourt: UIImageView!
@IBOutlet weak var labelOpponent: UILabel!
@IBOutlet weak var labelPlayer: UILabel!
var playerWinners = 0 //holds total amount of winners player has hit
var playerShortWinners = 0 //holds amount of winners play has hit short
var playerDeepWinners = 0 //holds amount of winners play has hit deep
var playerErrors = 0 //holds total amount of errors play has hit
var playerErrorsLeft = 0 //holds amount of errors play has hit left
var playerErrorsRight = 0 //holds amount of errors play has hit right
var playerErrorsDeep = 0 //holds amount of errors play has hit deep
var playerErrorsNet = 0 //holds amount of errors play has hit in the net
var opponentWinners = 0 //holds total amount of winners opponent has hit
var opponentShortWinners = 0 //holds amount of winners opponent has hit short
var opponentDeepWinners = 0 //holds amount of winners opponent has hit deep
var opponentErrors = 0 //holds total amount of errors opponent has hit
var opponentErrorsLeft = 0 //holds amount of errors opponent has hit left
var opponentErrorsRight = 0 //holds amount of errors opponent has hit right
var opponentErrorsDeep = 0 //holds amount of errors opponent has hit deep
var opponentErrorsNet = 0 //holds amount of errors opponent has hit in the net
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
let dvc = segue.destination as! SixthViewController
dvc.playerErrorsDeep = self.playerErrorsDeep
print("segueing from self \(self.playerErrorsDeep) to dvc: \(dvc.playerErrorsDeep)")
dvc.playerErrorsNet = self.playerErrorsNet
dvc.playerErrorsLeft = self.playerErrorsLeft
dvc.playerErrorsRight = self.playerErrorsRight
dvc.playerErrors = self.playerErrors
dvc.playerShortWinners = self.playerShortWinners
dvc.playerDeepWinners = self.playerDeepWinners
dvc.playerWinners = self.playerWinners
dvc.opponentErrorsDeep = self.opponentErrorsDeep
print("segueing to dvc2: \(dvc.opponentErrorsDeep)")
dvc.opponentErrorsNet = self.opponentErrorsNet
dvc.opponentErrorsLeft = self.opponentErrorsLeft
dvc.opponentErrorsRight = self.opponentErrorsRight
dvc.opponentErrors = self.opponentErrors
dvc.opponentShortWinners = self.opponentShortWinners
dvc.opponentDeepWinners = self.opponentDeepWinners
dvc.opponentWinners = self.opponentWinners
}
override func viewDidLoad()
{
self.navigationItem.setHidesBackButton(true, animated: false) //removes back button from access by user
self.view.backgroundColor = UIColor(patternImage: UIImage(named: "tennis_background.jpg")!) //sets background of view controller to the background image
super.viewDidLoad()
}
@IBAction func youErrorDeep(_ sender: Any)
{
playerErrors += 1
playerErrorsDeep += 1
print("deep \(playerErrors), \(playerErrorsDeep)")
}
@IBAction func youErrorLeft(_ sender: Any)
{
playerErrors += 1
playerErrorsLeft += 1
}
@IBAction func youErrorRight(_ sender: Any)
{
playerErrors += 1
playerErrorsRight += 1
}
@IBAction func youWinnerDeep(_ sender: Any)
{
playerWinners += 1
playerDeepWinners += 1
}
@IBAction func youWinnerShort(_ sender: Any)
{
playerWinners += 1
playerShortWinners += 1
}
@IBAction func youErrorNet(_ sender: Any)
{
playerErrors += 1
playerErrorsNet += 1
}
@IBAction func opponentErrorDeep(_ sender: Any)
{
opponentErrors += 1
opponentErrorsDeep += 1
print("it happens")
}
@IBAction func opponentErrorLeft(_ sender: Any)
{
opponentErrors += 1
opponentErrorsLeft += 1
}
@IBAction func opponentErrorRight(_ sender: Any)
{
opponentErrors += 1
opponentErrorsRight += 1
}
@IBAction func opponentWinnerDeep(_ sender: Any)
{
opponentWinners += 1
opponentDeepWinners += 1
}
@IBAction func opponentWinnerShort(_ sender: Any)
{
opponentWinners += 1
opponentShortWinners += 1
}
@IBAction func opponentErrorNet(_ sender: Any)
{
opponentErrors += 1
opponentErrorsNet += 1
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
Bevor Sie sich Gedanken über 'dvc.playerErrorsDeep' machen, haben Sie sich' self.playerErrorsDeep' angesehen? War das, was du dachtest, dass es sein sollte? Wenn nicht, setze einen Haltepunkt, an dem du _that_ festlegst und stelle sicher, dass (a) es richtig eingestellt wird; und (b) es wird nicht irgendwo versehentlich zurückgesetzt. – Rob
Wenn Sie nicht sicher sind, wo diese Variable sich ändert, kann ein Xcode "watch" sehr nützlich sein: http://Stackoverflow.com/a/41196124/1271826 – Rob
Ich habe festgestellt, dass der self.playerErrorsDeep ordnungsgemäß aktualisiert wird auf der ersten View-Controller, aber es scheint ein Problem bei der Übertragung auf die zweite Ansicht Controller, dass die Variable gibt nicht diesen Wert und sitzt für immer bei 0. –