2013-01-04 99 views
0

後表視圖數字串數字進行排序我有增加了一個按鈕,按下行的表視圖。行按每行的升序從字符串itmeNo開始編號。我的問題是當用戶刪除一行時,數字不再按順序排列。如何行刪除

即1,2,3,4,5,

如果用戶刪除他們的編號

1,2,5

林停留在如何將數字排序位排3-和4 ?在那裏我有[self.observations count] + 1];我可以改變這也許這樣itemNo總是各種各樣的上升數字

總之我總是希望我的表視圖中的行數字符串始終按順序編號

遙不可及了一點,但到目前爲止,香港專業教育學院試圖[self.tableView reloadData];在刪除方法以及允許重新排序表視圖的方法。

- (void)addObservationButtonPressed:(id)sender 
{ 
LogCmd(); 
Observation *observation = [[ICObservationManager manager] newObservation]; 
observation.createdAt = [NSDate date]; 
observation.modifiedAt = [NSDate date]; 
observation.certificate = self.certificate; 
observation.itemNo = [NSString stringWithFormat:@"%d", [self.observations count] + 1]; 
[self.certificate addObservationsObject:observation]; 
[self loadData]; 
[self.tableView reloadData]; 
[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:self.observations.count-1 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; 
} 


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
return [self.certificate.observations count]; 
} 



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *cellIdentifier = @"ObservationsCellIdentifier"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
} 
Observation *observation = [self.observations objectAtIndex:indexPath.row]; 
NSString *itemLabel = [NSString stringWithFormat:@"%@. %@", 
         observation.itemNo, 
         (observation.item.length ? observation.item : @"No description")]; 
cell.textLabel.text = itemLabel; 

return cell; 
} 

//Delete observations 

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

if (editingStyle == UITableViewCellEditingStyleDelete) { 
    [self.managedObjectContext deleteObject:[self.observations objectAtIndex:indexPath.row]]; 
    [self.appDelegate saveContext]; 
    [self.observations removeObjectAtIndex:indexPath.row]; 
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 

} 

} 
+0

你應該回顧你的最後一個數組的objectAtIndex值的id,然後加1然後存儲新的.. –

+0

感謝您的快速回復,你可以擴大一點,因爲不太確定我明白 – JSA986

+0

我已粘貼代碼低於 –

回答

0

這裏是代碼: -

Observation *observation = [self.observations objectAtIndex:[self.observations count]-1]; 
int lastValue = [observation.itemNo intValue]; 
lastValue++; 

lastValue是最大值,您可以使用

希望它可以幫助你

+0

再次感謝你,不幸的是,這並沒有重新排序我的表視圖號碼字符串。它只是相同除非我沒有正確實施它當然。我試過了我的刪除方法,並添加方法 – JSA986

+0

你在哪裏添加了這個代碼? –

+0

我添加它to' //刪除observations'方法,沒有工作,所以我把它添加到,' - (UITableViewCell的*)的tableView:(UITableView的*)的tableView的cellForRowAtIndexPath:(NSIndexPath *)indexPath' – JSA986

0

試試這個代碼

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

if (editingStyle == UITableViewCellEditingStyleDelete) { 
    [self.managedObjectContext deleteObject:[self.observations objectAtIndex:indexPath.row]]; 
    [self.appDelegate saveContext]; 
    [self.observations removeObjectAtIndex:indexPath.row]; 

//need to add these lines 
NSSortDescriptor *sortByUploaded =[NSSortDescriptor sortDescriptorWithKey:@"itmeNo"ascending:YES]; 

    NSArray *sortDescriptorArr = [NSArray arrayWithObjects:sortByUploaded,nil]; 

self.observations = [NSMutableArray arrayWithArray:[self.observations sortedArrayUsingDescriptors:sortDescriptorArr]]; 


    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 

} 

}

讓我知道,如果它不工作

+0

羅希特你很棒 – iEinstein

0

當你從UITableView刪除行只是將其排序的順序再次要作爲@羅希特沒有,然後刪除該行並按照順序重新加載你的表。希望這可以幫助。