2017-07-29 62 views
-1

嘿傢伙我正在開發我的第一個應用程序,需要一些幫助。我的鍛鍊跟蹤器應用程序有兩個類,您可以在下面找到。我有兩個視圖控制器連接到自己的swift文件。通過不同的視圖控制器數組數據Swift

Heres my first view controller

基本上它是在文本字段和步進器需要的數據,並把它變成一個「鍛鍊」對象然後將其附加到「WorkoutList」級陣列。

我有打印語句設置打印Array.count。它在調試中顯示正確的編號,但當我切換視圖時,它被重置爲零。

@IBAction func addToWorkoutList(_ sender: UIButton) { 

     let workout = Workout(name: workoutName.text!, description: workoutDescription.text!, sets: Int(setStepper.text!)!, reps: Int(repStepper.text!)!) 
     workoutArrayList.append(workout) 

     print(workoutArrayList.count) 
    } 

第二種觀點繼承了第一觀點類,所以這就是我訪問「WorkoutArrayList」

class OverViewViewController: NewWorkoutViewController, UITableViewDelegate, UITableViewDataSource { 

我的應用程序基本上可以讓你添加,然後鍛鍊產生基於這些數據,您的圖表提供。這可以很容易地看到你在健身房中的收穫。我正在做這個學習項目,所以任何幫助我應該做什麼來構建這個應用程序也將不勝感激。

鍛鍊對象類

import Foundation 

class Workout { 

    let workoutName : String 
    let workoutDescription : String 
    let numberOfSets : Int 
    let numberOfReps : Int 

    init(name : String, description : String, sets : Int, reps : Int) { 
     workoutName = name 
     workoutDescription = description 
     numberOfSets = sets 
     numberOfReps = reps 
    } 
} 

WorkoutList類

import Foundation 

class WorkoutList { 

    let workoutArray : [Workout] = [] 

} 
+0

你是如何切換視圖??你的意思是推動newViewController? –

+0

[你如何在視圖控制器和Swift中的其他對象之間共享數據?](https://stackoverflow.com/questions/29734954/how-do-you-share-data-between-view-controllers-and -other-objects-in-swift) – Shades

回答

0

繼承的類不是你想在這裏做什麼。一個簡單的解決方法是讓workoutArray成爲一個靜態變量,這樣任何類都可以在任何給定的時間訪問它。

static var workoutArray : [Workout] = []

這是爲什麼只是繼承類不起作用。當OverViewViewController加載到應用程序時,它會創建類OverViewViewController的新實例,並且由於它繼承了NewWorkoutViewController,它還創建了NewWorkoutViewController類的新實例。您有兩個不同的NewWorkoutViewController實例,在其中一個實例中更改變量不會爲該類的任何其他實例更改該實例。然而,一個靜態變量是你正在尋找的。數組可以隨時從任何類中更改和訪問,您甚至不需要繼承。無論你製作靜態的workoutArray還是workoutArrayList,它都可以工作。

如果您有任何其他問題,請隨時留下評論。

+0

謝謝你的幫助。我是一位試圖快速測試水域的新開發者。繼承視圖控制器感覺不對,但我能想到的就是它。傻了,我忘了靜態變量。 –

相關問題