2009-12-03 51 views
7

我有一個tableview,我想根據它有多少行來定製。我如何從UITableView獲得行數

如果它沒有行,我想讓背景圖片提示用戶添加內容。 如果它有一行或多行,我希望它有不同的背景圖像,以顯示內容。

順便說一句,我正在使用fetched results controller填充我的tableview。

任何想法?

回答

22

這樣做通常很容易完成,因爲只需要讓UITableView通過包含在.m文件中的相應委託方法正確委派給ViewController。

然後你就可以在任何地方獲得的行數是這樣的:

[tablePropertyName numberOfRowsInSection:SECTION_NUMBER]; 

其中部分號碼是0,首節,1秒等

+0

這應該是正確的答案,因爲它是更好的解決方案。您可以使用該屬性來確定該部分中的行數,而不是依賴數據源數量。這樣,無論數據源發生什麼(可能會損壞),您都會在正確的位置添加行。 – 2015-07-25 16:22:06

1

我建議看看NSFetchedResultsController的文檔。它具有用於實現UITableViewDataSource(包括表格中有多少部分以及每個部分中有多少行)的方法的示例代碼,以及記錄屬性fetchedObjects,您可以使用它來查看多少個原始結果你抓到了。

[myFetchedResultsController.fetchedObjects count]; 
5

我同意Sixten Otto的回答。

[myFetchedResultsController.fetchedObjects count]; 

但還有更多。上面的行將返回對象的數量,而不管這些部分。但是,如果您想要在具有多個部分的表格上執行此操作,則必須按以下方式進行調用。

[[myFetchedResultsController.sections objectAtIndex:<section>] numberOfObjects]; 

您可以像這樣獲取節的對象。

[[myFetchedResultsController.sections objectAtIndex:<section>] objects]; 

**您必須用代表該部分的數字替換。

希望這會有所幫助。

0

在斯威夫特,你可以得到的UITableView行數通過

yourTableViewName.numberOfRows(inSection: Int) 

例如:

yourTableViewName.numberOfRows(inSection: 0) // returns rows count in section 0