2013-03-30 33 views
1

我有一個TableViewController並設計了一個使用storyboard的自定義uitableview單元格。我已經正確設置了我的tableview單元格中所有子視圖的標識符和標籤(我不是第一次這樣做,讓事情輕鬆工作)。UITableViewCell子視圖沒有得到初始化

但現在我一直在我的桌面視圖控制器上觀察一些奇怪的事情。在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath的方法中,我得到了正確的單元格。我也可以通過標籤訪問我的子視圖。但是,當我嘗試訪問任何子視圖的框架屬性時,我得到的值爲0.

子視圖是否在稍後以某種其他方法進行佈局。這是我第一次看到這個。有人曾經經歷過這個?

+0

添加一些代碼以供參考 – NANNAV

回答

2

執行tableView:willDisplayCell:forRowAtIndexPath:並檢查子視圖的框架。他們還好嗎?然後一切都很好。

3

在調用了'layoutSubviews'方法之後,單元格的子視圖框才準備好。如果需要修改這些幀,那麼你應該創建的UITableViewCell的子類,並實現layoutSubviews

- (void)layoutSubviews { 
    [super layoutSubviews]; 

    // modify frames here 
} 

如果你只需要訪問幀值,不需要做任何改變,那麼你可以簡單地檢查在tableView:willDisplayCell:forRowAtIndexPath:方法中。

+0

那麼說,其他@Matt!只是要清楚,應該指出'layoutSubviews'甚至比'tableView:willDisplayCell:forRowAtIndexPath:'更晚。 – matt

+0

@matt謝謝! :) – Matt

+0

我沒有檢查'tableView:willDisplayCell:forRowAtIndexPath:',甚至在那裏幀尺寸仍然是零。我不需要修改框架,但我正在構建基於此框架大小的另一個視圖。我想我會繼承它。但奇怪的是我有我的故事板中的另一個表視圖與相似的意見,我subview是在cellForIndexPath方法本身初始化。感謝馬特(s .. :))的幫助! – user2226275