2013-07-25 61 views
0

我目前在IB編輯器中有兩個單獨的視圖控制器。基本上我想設置一個變量的值(在我的情況下,它是一個浮點型,代表我將設置爲定時器),它基於在第一個視圖控制器中按下的按鈕,然後將該變量傳遞給第二個視圖控制器。我想到的問題是,因爲變量集是基於在第一個視圖中按下的UISegmentedControl,所以不像我可以在第二個類中創建第一個類的實例,因爲這不會保存哪個按鈕被按下。對? 因此,接下來我嘗試將第一個類中的變量設置爲靜態變量,然後將第二個類作爲第一個類的子類並以此方式訪問變量。不幸的是,我在第一個類中設置了變量,但是當我從第二個(子類)類訪問它時,它默認返回值爲0.這是不正確的。看起來好像數據封裝導致了這種情況?在一個視圖控制器中設置一個變量,並在另一個視圖控制器中基於按鈕進行訪問

簡而言之,我只是希望能夠在我的viewController中基於按下的按鈕設置一個變量,然後使用該變量並在我的第二個viewController類中訪問它。

我也想知道爲什麼從子類訪問變量不起作用的簡短解釋。任何不清楚的部分我都會盡力清理。先謝謝你!

+0

請在您提出問題之前進行一些搜索 - 在此論壇上每天至少詢問一次此問題的版本。嘗試搜索「在一個視圖控制器中設置變量並在另一個視圖控制器中訪問它」,您會得到很多結果。 – rdelmar

+0

是的,謝謝,我已經研究過它並嘗試過了,它不是那樣工作的。我的問題是爲什麼它不像其他問題中所述的那樣工作,以及是否有更好的方法來做到這一點,而不是我目前正在嘗試的方法。 – kyleC

+0

您的問題是您需要獲取對其他控制器的引用,而不是像您所指出的那樣創建一個新實例。你如何得到這個參考取決於兩個控制器是如何相關的。一個人創造另一個(然後推動或呈現在代碼中),還是繼續向另一個?關於從子類訪問變量的問題,您有一個基本的誤解 - 孩子將擁有相同的變量,但它將是一個不同的實例,所以它會有自己的值,對於整數或零對象,直到你設置它。 – rdelmar

回答

0

更好的方法可能是創建一個類,它是您的常用數據的數據模型。在這種情況下,它只是您的計時器的浮點值。

創建模型類的一個實例,然後爲每個視圖控制器類中的對象添加一個屬性。當您實例化視圖控制器時,將其屬性設置爲指向模型對象。

希望這是有道理的?

+0

是的,謝謝!事實證明,我的問題大部分是由於在初始化靜態值時沒有設置值,但是感謝您的建議。我假設你的方法通常被視爲「更好的編程風格」,而不是我在不需要時使用的靜態變量。 – kyleC

+0

這是正確的。最好考慮「這些數據屬於哪裏」來達成架構決定。特別是當你看到代碼的兩個或更多部分不得不一起工作時。很高興我能幫上忙。 – stevekohls

相關問題