2013-10-25 43 views
1

我有一個UITableView,它從遠程供稿中加載某些數據,並且我想在從供稿源加載的所有行的開始處手動在表格的頂部添加一行。使用數據源向UITableView添加一行

因此,舉例來說,如果從進料我會與行

表////////////////////////// ////////////////

1(來自UITableView的數據源加載)

////////////////// ////////////////////////

2(來自UITableView的數據源加載)

////////// //////////////////////// ////////

(從UITableView中數據源加載)////////////////////////// ////////////////


我想這些的頂部手動添加一行,所以我會:


// ////////////////////////////////////////

0(手動添加)

//////////////////////

1(來自UITableView的數據源加載)

///////////////////////////////// /////////

2(來自UITableView的數據源加載)

///////////////////////// /////////////////

3(從UITableView數據源加載)

//////////////////////////////////////////

這可能嗎?有沒有其他的方法來防止這種情況發生?就像有兩個UITableView並把它們放在一起或類似的東西。

非常感謝!

+0

默認情況下是否需要1行? –

回答

1

新元素添加到您的數據陣列,例如:

//This is your data: 
NSMutableArray *myData; 

//Add new row at the beggining: 
[myData insertObject:newData atIndex:0]; 

//Reload your table view 
[self.myTableView reloadData]; 
1

是的,這是可能的。
在您要添加你行的功能,這樣做:

NSMutableArray *indexPathsToInsert = [[NSMutableArray alloc] init]; 
[indexPathsToInsert addObject:[NSIndexPath indexPathForRow:0 inSection:0]]; 

[self.tableView beginUpdates]; 
[self.tableView insertRowsAtIndexPaths:indexPathsToInsert withRowAnimation:UITableViewRowAnimationTop]; 
[self.tableView endUpdates]; 

你可以改變這取決於你想要什麼樣的影響的行插入動畫。
/!\你的數據源和你的函數tableView:cellForRowAtIndexPath:必須與要顯示

0

如果這是你想要添加靜態第一排什麼一致的,我建議你使用UITableViewHeader顯示代替的UITableViewCell吧。如果你確實想把它賣掉,爲什麼不添加另一部分?第一部分將只包含這一個單元格,第二部分將包含顯示從源中獲取的數據的所有單元格。你可以跳過標題視圖,所以不會注意到你有2個部分而不是1個。 另一種方法是將要在第一個單元格中顯示的數據添加到數據源並只有一個部分,但我更喜歡第一種方法,因爲代碼和邏輯更清晰

0

您必須是使用數組從遠程表中加載數據。 只需在這些數組的開始處推送一個元素(無論您在第一行需要什麼數據)。

NSMutableArray* array; 
[array insertObject:dataInFirstRow atIndex:0]; 
0

它可能對你有用..

1)首先插入新的元素到您的數據源陣列:

在陣列的開頭插入的元素。

2)通過獲取可見行indexPath

NSArray *visibleIndexes = [self.tableview indexPathsForVisibleRows]; 

3)然後重新加載所有可見的行而不動畫:

[self.tableview reloadRowsAtIndexPaths:visibleIndexes withRowAnimation:UITableViewRowAnimationNone]