2012-07-22 90 views
-2

我有一個方法,我得到了colorWithHex,讓我發送像ffaa29(十六進制)的字符串,並得到一個UIColor。該方法起作用。如果我做設置textview文字顏色與變量

self._mainConsole.textColor = [self colorWithHexString: choice]; 

我可以設置顏色。但問題是我想存儲顏色。例如,如果他們輸入無效的顏色,我想要返回當前的顏色。

當我這樣做是行不通的。

self.foregroundColor =[self colorWithHexString: choice]; 
self._mainConsole.textColor = self.foregroundColor; 

相反,它變黑,這對我聽起來像它的將000000現在,在我的測試iPad的它在一個點上面一樣,但沒有其他工作。在測試人員ipad 1上,第二種方法根本不起作用。我錯過了什麼?有沒有內存問題?

邁克

+0

如何檢查顏色是否無效?你的邏輯是什麼?只有當它們輸入的顏色有效時,你才希望它改變顏色? – 2012-07-22 07:15:13

+0

我在網上發現了這個colorWithHex。例如,它只是確保字符串是6個字符。這一切都工作正常。正如我所說,當我從直接返回而不是變量設置的前景顏色發生變化時。我的問題是關於如何爲變量分配顏色。我是新來的Objective-C。我的foregroundColor變量可能需要內存嗎?該函數返回: – LanternMike 2012-07-22 07:23:40

+0

要將顏色分配給變量,只需創建一個「UIColor」對象並將其存儲在該對象中。例如,你可以在你的界面上有一個'UIColor * myColor;',然後當你想存儲它時,就去'myColor = [self colorWithHexString:...]'。 (假設你正在使用ARC;如果沒有,你會去'myColor = [[self colorWithHexString:...] retain]') – 2012-07-22 07:27:10

回答

0

您使用的是弱屬性來保存你的顏色。這意味着一旦沒有其他強烈的顏色對象引用,它就會被替換爲nil。將您的財產更改爲strong,並且所有內容都應按預期工作。

+0

我要試一試。聽起來像是這個問題。我剛開始學習ios一個月前,但我已經在java,C++和c廣泛編碼。 c更多在過去和java目前以及android。我們很難掌握objective-c中所有的小怪異記憶,但我開始獲得更多的記憶。只是一種學習,因爲我編寫這個程序,我正在做的樂趣。 – LanternMike 2012-07-22 08:56:00