2011-07-25 19 views
1

當我們滾動到UITableView的最後一個單元格時,我想在UITableview中添加數據或單元格。換句話說,正如我們在許多iPhone應用程序中看到的那樣,當我們到達UITableview的最後一個單元格時,在運行時會添加更多的單元格。我想在我的項目中實現該功能。如何在運行時在UITableview中添加數據?

方法當我們到達之前添加的最後一個單元格時,向UITableview添加更多單元格。

請告訴我示例代碼或任何教程。

+0

相同的功能一直跟着蘋果tableviewcell.already one.so只是用它來實現。 –

+0

我知道如何在UITableview中顯示數據。我想在用戶到達最後一個單元格時添加數據。意味着當用戶到達最後一個單元時,將更多的單元格和數據添加到它中。 –

回答

2

我認爲這裏有2個問題。 一,如何檢測tableVeiw的結束?其次,如何動態添加細胞? 第一個問題,我認爲可以通過觀察scrollView的內容偏移值或tableView單元格的當前indexPath來完成。通過以下UIScrollViewDelegate方法可以觀察到scrollView的內容偏移量。內容偏移量是scrollView的一個屬性。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGFloat currentOffset = scrollView.contentOffset; 

    // Detect scrolling to bottom by this offset value. 
    .... 
} 

單元格的索引可以通過UITableViewDataSource的方法來決定。

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath 

第二個問題可能會被UITableView的方法所淹沒。

  • beginUpdates
  • endUpdates
  • insertRowsAtIndexPaths:withRowAnimation:
  • deleteRowsAtIndexPaths:withRowAnimation:
  • insertSections:withRowAnimation:
  • deleteSections:withRowAnimation:

我記得示例代碼在this official document將教會如何使用上述方法。它們不會重新裝載所有單元,但不小心的操作會輕易導致崩潰。

0

通過使用數組填充tableView(正如您應該始終這樣做)。當委託方法cellForRowAtIndexPath要求您輸入最後一個單元格時,請使用新的(更多)數據重新填充陣列,並製作[tableView reloadData]

+0

但它會重新加載所有表格數據。我想將數據添加到UITableView –

+0

中以前存儲的數據中,這會導致這種情況。如果您使用mutableArray存儲tableView內容,只需將新數據添加到它。當你調用[tableView reloadData]時,它會簡單地認識到現在有更多的數據可用,並且會添加額外的單元格。 – yinkou

0

你只是想在表中添加數據?

然後,首先您可能需要添加一個視圖,模態視圖。你應該寫一些關於你想在這個視圖中添加的規範。

接下來將消息發送到現有的數據陣列(假定您使用陣列)

[ExistingArrayData addObject:TemporalilyNewObject]; 

而且可以通過使用NSSortDescriptor對數據進行排序。

NSSortDescriptor *nameSorter = [[NSSortDescriptor alloc] initWithKey:KEY_VALUE ascending:YES selector:@selector(caseInsensitiveCompare:)]; 
[ExistingArrayData sortUsingDescriptors:[NSArray arrayWithObject:nameSorter]]; 

在這種情況下,此方法按照KEY_VALUE按升序排序數據。

最後,你需要在RootView的viewWillAppear方法中添加這段代碼。

[self.tableView reloadData]; 

此代碼通知應用程序的數據更改。

+0

不,我想在到達表格的最後一個單元格時添加數據 –

+0

爲什麼要在到達最後一個單元格時添加數據?不是通過點擊'+'按鈕? – manutd

1

如果您有存儲在陣列數據,那麼你就一定有你想要多少細胞計數。 使用下面的代碼對你的幫助

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return [array count];} 

我相信這會幫助你。

+0

但是我想添加更多的數據,這是從網絡調用,當用戶到達tableview的最後一個單元 –

+0

好吧。所以你知道你最後一個細胞的數量。我的意思是最初你有多少個單元在viewWillAppear中 –

0
-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ 

     int i=0; 

     i=indexPath.row; 

     int count=[urTablearray count]; 

     if (count == (++i)) { 

       //do ur stuff here 

        here add object to urTablearray 

        [urTablearray addObject:@"vijay"]; 


     } 


    } 

注:urTablearray是NSMutableArray的類型不是NSArray的