2013-12-12 130 views
0

我通常會發布UI的源代碼和示例,但我認爲它更多地涉及到iOS7更改,並且我不能看到它是一個代碼錯誤(還)。我將不得不張貼如此之多的代碼和用戶界面,以免產生反效果。因此,這裏是我的最好的非可視化描述:重疊文本問題:iOS7

由於升級項目iOS7我發現,如果我把調用改變UILabel或在ViewDidAppearViewWillAppear它把新文本對上調用UIButtonsetText舊文本的頂部。

由於爲iOS開發,我從來不需要做任何不同的事情。如果我這樣做:

lblMyHours.text = @"12";

它不應該只是拋出我的現有標籤的上面。

這特別發生在UITableView裏面,我創建了一個UILabel的iVar,這就是UITableViewCell。如果用戶在單擊單元格後調整值(將它們帶到詳細信息屏幕進行編輯),那麼當我彈出時,我會重新計算ViewDidAppear。在重新計算時,我正在重新設置上述標籤。但它沒有清除舊的。

+2

每次您返回新的單元格時,是不是在舊的標籤上添加新的標籤? – Guilherme

+0

哦!我從來沒想過這點。好吧,我現在已經離開我的蘋果機了,但我必須看看它。它一直讓我瘋狂,但你說得對,它實際上可以實例化一個新的對象,並把它放在舊的頂端... – logixologist

+1

@Guilherme請添加此作爲答案,我可以接受它。很愚蠢的是,我沒有意識到,我實際上每次都在其上添加一個新的。 – logixologist

回答

1

您可能會在每次返回新單元格時添加新標籤。 您應該只替換當前標籤的文本。

+1

因爲它對我很有幫助,所以你甚至可以得到賞金賞金,只要檢查正確的方法就可以了。 – logixologist

+1

好的,我必須等24小時才能獲得獎勵,但明天你將獲得額外的50分!乾杯! – logixologist

+0

謝謝,我很高興幫助:) – Guilherme

1

有兩種方法可以實現這一點,一個是你已經在做的,正如@Guilherme正確指出的那樣。另一種方法是創建一個自定義tableview單元格並將UILabel屬性放在那裏。至於viewDidAppear方案,您可以在.h文件(在@interface聲明中)中創建一個uilabel,然後在ViewDidLoad方法中初始化它,並在ViewDidAppear方法中簡單使用,而無需再次聲明它。

我建議你按照我描述的ViewDidAppear問題的方式,對於UITableView問題,在cell的子視圖中搜索UILabels,每次調用cellForRowAtIndex方法並將其從子視圖中移除時,像添加新標籤

for(UIView *view in cell.subviews) 
{ 
    if([view isKindOfClass:[UILabel class]]) 
    { 
     [view removeFromSuperview]; 
    } 
} 

希望這會有所幫助。