2013-11-21 18 views
5

我正在寫一個抽象類的UITableViewController,我想寫viewDidLoad類似確定UITableView是否以編程方式具有靜態單元或動態原型?

if (self.tableView.contentType == UITableViewContentTypeStaticCells) { 
    // Do something when table view has static cells 
} else { 
    // Do something when table view has dynamic prototypes 
} 

但顯然沒有對的UITableView沒有contentType。有沒有一種方法可以通過編程來確定tableView的storyboard內容是靜態的還是動態的?

+1

也許你可以解釋*爲什麼靜態/動態單元應該被區別對待。你想達到什麼目的? –

+0

這是一個合理的問題,但我認爲這與我所問的無關。我想知道是否有可能以編程方式區分這兩種類型的故事板表格視圖。如果不是,那就是合適的答案。 :) – dmur

+1

這是有趣的知道例如本地化目的。您可能想自動本地化靜態單元,但不是動態單元。 – osxdirk

回答

0

沒有可以區分這兩者的構建方式,但如果您更具體地瞭解您要實現的目標,我們可能會提出其他方法來實現您的目標。

+1

謝謝,這就是我一直在尋找的。我不是要求其他方法來實現我的具體目標,我已經有一些想法。 – dmur

1

只是爲了好奇:[tableViewController valueForKey: @"staticDataSource"]會讓你在那裏,其中tableViewController是一個UITableViewController。

但是(!)這可能不會傳遞AppStore,並且可能因爲它不是發佈的API而在沒有警告的情況下中斷。

更新:看來,如果檢查,如果

self == self.tableView.dataSource 

而自我是一個UITableViewController也給你重新請求的結果檢查。

0

我的解決方案假定抽象的UITableViewController類必須公開BOOL屬性

@property (assign, nonatomic) BOOL staticCells; 

此屬性是由具體的類增值(valorised),以及數據源的方法實現在這種情況下檢查屬性的存在條件,如:

- (UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (!self.staticCells) { 
     ... 
    } 
    else{ 
     UITableViewCell* cell = [super tableView:tableView cellForRowAtIndexPath:indexPath]; 
     [cell layoutIfNeeded]; 
     return cell; 
    } 
} 

我想你正在尋找一個系統框架屬性(或委託方法)來檢查靜態行爲,但也許這個解決方案可能對某人有用

相關問題