2015-08-06 2 views
-2

Я нажимаю на кнопку и получаю очки, я нажимаю на другую кнопку, и игра закончена. Счет сохраняется. Но теперь я хочу, чтобы получить высокий балл. Как можно получить высокий балл на втором контроллере?Сохранить высокий балл на другом контроллере представления

ответ

1

Пусть ваш первый контроллер будет ViewController, а второй - ViewController_2. И пусть будет массив с именем scores в ViewController, который вы устанавливаете при нажатии на кнопку button. Теперь вам нужна другая переменная в ViewController_2 типа Int, пусть она будет score_2, которая является HighScore.

Вот как ViewController_2 должен выглядеть следующим образом:

class ViewController_2: UIViewController { 
     var score_2:Int; 
     override func viewWillAppear(){ 
     //ScoreLabel.text="High Score : \(score_2)" 
     } 
    } 

Вот как ViewController должен выглядеть следующим образом:

class ViewController: UIViewController { 
    var scores:[Int]; 

    @IBAction func foo(sender:Button) { 
    let score:Int=getScore() 
    scores.append(score) 
    } 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    var destination=segue.destinationViewController as ViewController_2 
    destination.score_2=maxElement(self.scores) 
} 
} 

Читайте о segues, это, несомненно, поможет вам.

+0

Я вмятина написать код, но я не могу найти в код о высоком балла. Сохранение оценки в приложении у меня уже есть. – USER1234

+0

Я просто понял это сейчас. Отредактировал код. –

+0

Можете ли вы отправить код в проекте Xcode :)? Я не понимаю (я стартер). – USER1234

0

Лучший способ сохранить рекорды - NSUserDefaults. Это позволит вам сохранить что-то вроде рекорда, а затем вызвать его в любое время в вашем приложении.

let highscore = label.text; 
NSUserDefaults.standardUserDefaults().setObject(highscore, forKey: "Highscore") 
    NSUserDefaults.standardUserDefaults().synchronize() 

В этом случае у меня есть все, что на этикетке, а затем сохранено как ваш новый рекорд. Вы захотите реализовать способ удостовериться, что этот счет должен быть выше вашего предыдущего рекорда, чтобы быть сохраненным.

если вы хотите вызвать его на другой контроллер зрения все, что вы должны сделать, это:

 NewLabel.text = NSUserDefaults.standardUserDefaults().stringForKey("Highscore") 

Я надеюсь, что это помогает

+0

Метка на первом контроллере представления также связана с меткой оценки во втором контроллере представления, это влияет на код? Потому что он дает только ошибки. пусть highscore = label.text дает ошибку: тип контроллера просмотра не имеет имени с именем. (ярлык, на котором стоит оценка). NSUserDefaults.standardUserDefaults(). SetObject (highscore, forKey: «Highscore») дает ожидаемую декларацию об ошибке. И где нужен NewLabel.text = NSUserDefaults.standardUserDefaults(). Столбец stringForKey («Highscore»), первый или второй контроллер представления? – USER1234

+0

Можете ли вы отправить код в проект Xcode? – USER1234

Смежные вопросы