Ios 使用新行更新tableview,首先保留以前的行

Ios 使用新行更新tableview,首先保留以前的行,ios,iphone,objective-c,ipad,uitableview,Ios,Iphone,Objective C,Ipad,Uitableview,搜索大量数据后,未找到更新表视图的正确解决方案 我想更新我的tableview,就像新记录应该放在先前更新的记录的正下方一样 这是我的密码 if (sqlite3_open(myDatabase, &myConnection) == SQLITE_OK) { sqliteQuery = [NSString stringWithFormat: @"SELECT Description, SalePrice FROM ProductDetails WHERE Barcode = \

搜索大量数据后,未找到更新表视图的正确解决方案

我想更新我的tableview,就像新记录应该放在先前更新的记录的正下方一样

这是我的密码

if (sqlite3_open(myDatabase, &myConnection) == SQLITE_OK)
{
    sqliteQuery = [NSString stringWithFormat: @"SELECT  Description, SalePrice FROM ProductDetails WHERE Barcode = \'%@\'", barcode];
    if (sqlite3_prepare_v2(myConnection, [sqliteQuery UTF8String], -1, &sQLStatement, NULL) == SQLITE_OK)
    {
        if(sqlite3_step(sQLStatement) == SQLITE_ROW)
        {
                temp = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(sQLStatement, 0)];
            }
            temp1 = [NSString stringWithFormat:@"%d", value];
            if ([temp1 isEqualToString:@"0"])
            {temp1 = @"1";}
               temp2 = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(sQLStatement, 1)]                    }
            }
            [description addObject: temp];
            [qty addObject: temp1];
            [price addObject:temp2];
        }
        sqlite3_finalize(sQLStatement);
    }
    sqlite3_close(myConnection);
}
myTable.hidden = NO;
myTable.delegate = self;
myTable.dataSource = self;
[myTable reloadData];
[self.view endEditing:YES];
以及tableview数据源委托方法

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [description count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
// Configure the cell in each row
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell;
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell = [self getCellContentView:CellIdentifier];

UILabel *lbl11 = (UILabel *)[cell viewWithTag:1];
[lbl11 setText:@"Label1"];
UILabel *lbl21 = (UILabel *)[cell viewWithTag:2];
[lbl21 setText:@"Label2"];
UILabel *lbl31 = (UILabel *)[cell viewWithTag:3];
[lbl31 setText:@"Label3"];

lbl11.text = [description objectAtIndex:indexPath.row];
lbl21.text = [qty objectAtIndex:indexPath.row];
lbl31.text = [price objectAtIndex:indexPath.row];
   return cell;
}

- (UITableViewCell *)getCellContentView:(NSString *)cellIdentifier
{
UITableViewCell *cell = [[UITableViewCell alloc]   initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellIdentifier];
cell.backgroundColor=[UIColor clearColor];

CGRect lbl11Rect = CGRectMake(20, 5, 450, 30);
CGRect lbl21Rect = CGRectMake(545, 5, 150, 30);
CGRect lbl31Rect = CGRectMake(795, 5, 150, 30);

UILabel *lbl11 = [[UILabel alloc] initWithFrame:lbl11Rect];
lbl11.tag=1;
lbl11.font=[UIFont fontWithName:@"Superclarendon" size:15];
lbl11.backgroundColor=[UIColor clearColor];
//lbl11.layer.borderWidth = 1.0f;
[cell.contentView addSubview:lbl11];

UILabel *lbl21 = [[UILabel alloc] initWithFrame:lbl21Rect];
lbl21.tag=2;
lbl21.font=[UIFont fontWithName:@"Superclarendon" size:15];
lbl21.backgroundColor=[UIColor clearColor];
//lbl21.layer.borderWidth = 1.0f;
[cell.contentView addSubview:lbl21];

UILabel *lbl31 = [[UILabel alloc] initWithFrame:lbl31Rect];
lbl31.tag=3;
lbl31.font=[UIFont fontWithName:@"Superclarendon" size:15];
lbl31.backgroundColor=[UIColor clearColor];
//lbl31.layer.borderWidth = 1.0f;
[cell.contentView addSubview:lbl31];

cell.selectionStyle = UITableViewCellSelectionStyleBlue;
return cell;
}
对于第一次值搜索,它在tableview中显示数据…。如何正确更新tableview 我已经找到了更新

[myTable beginUpdate] 
函数将被使用…并且还有

insertRowsAtIndexPaths: withRowAnimation
但不幸的是没有找到任何好的帮助,如何使用这个。
欢迎提供任何帮助。…

首先更新数据源,以便numberOfRowsInSection和cellForRowAtIndexPath将为插入后的数据返回正确的值。在插入或删除行之前必须执行此操作。 然后插入您的行:

   // First figure out how many sections there are
    NSInteger lastSectionIndex = [tableView numberOfSections] - 1;

// Then grab the number of rows in the last section
NSInteger lastRowIndex = [tableView numberOfRowsInSection:lastSectionIndex];

// Now just construct the index path
NSIndexPath *pathToLastRow = [NSIndexPath indexPathForRow:lastRowIndex inSection:lastSectionIndex];

//Adding new data row to last index position:
[myTable beginUpdates];
[myTable insertRowsAtIndexPaths:[NSArray arrayWithObject: pathToLastRow] withRowAnimation:UITableViewRowAnimationNone];
[myTable endUpdates];
动画有不同的变体:

UITableViewRowAnimationBottom
UITableViewRowAnimationFade
UITableViewRowAnimationMiddle
UITableViewRowAnimationNone
UITableViewRowAnimationRight
UITableViewRowAnimationTop
从iOs开发者库:

beginUpdates
Begin a series of method calls that insert, delete, or select rows and sections of the receiver.
Discussion
Call this method if you want subsequent insertions, deletion, and selection operations (for example, cellForRowAtIndexPath: and indexPathsForVisibleRows) to be animated simultaneously. This group of methods must conclude with an invocation of endUpdates. These method pairs can be nested. If you do not make the insertion, deletion, and selection calls inside this block, table attributes such as row count might become invalid. You should not call reloadData within the group; if you call this method within the group, you will need to perform any animations yourself.

您可以在相关示例代码中找到使用此方法的示例:iPhoneCoreDataRecipes

首先,您没有正确地对单元格进行去噪。删除单元格后,您再次在getCellContent视图中初始化单元格,这是错误的。@Faizii请您告诉我正确的方法。请您告诉我,根据我的代码,我应该将此代码放置在哪里……我是iOS的几天开发人员,所以我不知道您到底建议我什么…@Zaibi查看我的更新答案