У меня есть меньшая проблема с добавлением subview в tableView Cell.Изменение размера подзапроса динамически в ячейке tableview
I мой фон для ячейки является динамическим от процентного подсчета ..
Я получаю процент правильно, а фон я могу установить отлично, но когда я добавить новую запись .. все облажались
Новая запись я получаю совершенным, но клетки, которые до того, как оставаться неизменным, даже после того, как я изменить его размер.
магическая вещь, когда я остановить и построить его все совершенствовать свой путь ..
Пожалуйста, помогите мне ..
я использую следующий код для достижения этой цели ...
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
// Dequeue the cell.
speedoCell *cell = [tableView dequeueReusableCellWithIdentifier:@"speedoCell" forIndexPath:indexPath];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
CGRect rect = cell.frame;
NSLog(@"Cell width = %f",rect.size.width);
float cell_width=rect.size.width;
float per;
float viewSize=0.0;
if (self.recent_calls.count == 0) {
cell.title.text [email protected]"No records";
cell.desc.text [email protected]"";
}
else{
NSInteger indexOfFirstname = [self.dbManager.arrColumnNames indexOfObject:@"ex_category"];
NSInteger indexOfSecondname = [self.dbManager.arrColumnNames indexOfObject:@"totle"];
NSString *totle_cat=[NSString stringWithFormat:@"%@", [[self.recent_calls objectAtIndex:indexPath.row] objectAtIndex:indexOfSecondname]];
int x=[totle_cat intValue];
NSLog(@"%d--yoyoyoyoyoyoyoyoyoyo--%d",x,amount_totle);
float result=0;
result=((float)x/(float)amount_totle)*100;
// cell_width is static = 343.0 ..... result is percentage we found
viewSize=(cell_width*result)/100;
NSLog(@"%f----------",viewSize);
UIView *view,*view1;
view=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 0, 0)];
view1=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 0, 0)];
view1.frame=CGRectMake(5, 5, cell.frame.size.width-10, cell.frame.size.height-3);
[view1.layer setCornerRadius:8.0f];
[view1.layer setMasksToBounds:YES];
[view1.layer setBorderWidth:0.5f ];
CGRect frame = view.frame;
frame.size.width = viewSize;
frame.size.height=cell.frame.size.height-3;
view.frame = frame;
NSLog(@"%f",view.frame.size.width);
[view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"road_panorama1.jpg"]]];
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *visualEffectView;
visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
visualEffectView.frame = CGRectMake(0, 0, viewSize, cell.frame.size.height-3);
[view addSubview:visualEffectView];
[view1 setBackgroundColor:[UIColor whiteColor]];
[view1 insertSubview:view atIndex:0];
[cell.contentView insertSubview:view1 atIndex:0];
UIImage *image;
if ([category isEqualToString:@"Travel"]) {
image=[UIImage imageNamed:@"taxi13.png"];
}
else if ([category isEqualToString:@"Food"]) {
image=[UIImage imageNamed:@"fastfood6.png"];
}
else if ([category isEqualToString:@"Medical"]) {
image=[UIImage imageNamed:@"stethoscope11.png"];
}
else if ([category isEqualToString:@"Shopping"]) {
image=[UIImage imageNamed:@"shopping-cart13.png"];
}
else{
image=[UIImage imageNamed:@"question-mark2.png"];
}
[cell.img setImage:image];
}
return cell;
}
Добавление т он запись из второго вида контроллера
NSString *query= [NSString stringWithFormat:@"insert into ex_man_last (ex_title,ex_amount,ex_description,ex_date,ex_category,ex_upload_date,ex_image,ex_my) values ('%@','%@','%@','%@','%@','%@','%@','%@')",_ex_title.text,_ex_amount.text,_ex_description.text,_ex_date.text,_ex_category.text,datestring,imageName,my ];
// Execute the query.
[self.dbManager executeQuery:query];
и вызова метода, чтобы получить обновленную запись из БД ввиду появится способ ..
NSString *query =[NSString stringWithFormat:@"SELECT *,sum(ex_amount) as totle FROM ex_man_last where ex_my='%@' GROUP BY ex_category ",query_date];
if (self.recent_calls != nil) {
self.recent_calls = nil;
}
self.recent_calls = [[NSArray alloc] initWithArray:[self.dbManager loadDataFromDB:query]];
NSLog(@"--->%@",_ex_main);
NSLog(@"%lu",(unsigned long)[self.recent_calls count]);
NSInteger indexOfSecondname = [self.dbManager.arrColumnNames indexOfObject:@"totle"];
for (int i=0; i<[self.recent_calls count]; i++) {
NSString *amount=[[self.recent_calls objectAtIndex:i] objectAtIndex:indexOfSecondname] ;
amount_totle=amount_totle+[amount intValue];
}
Весь код находится в ячейке для строки в методе индекс пути. ..
Пожалуйста, помогите мне ... Спасибо заранее ...
Для вашего рестарта он работает хорошо в том смысле, код в ячейке для строки правильно, как вы добавляете новую запись в виде таблицы вы убедитесь, что вы перезагружают таблицу. – MaheshBabu
Вы не принимаете во внимание повторное использование ячеек. Когда вы прокручиваете, и ячейка повторно используется, вы будете добавлять view1 в ячейку, у которой уже есть view1. – rdelmar
Вы можете опубликовать полную версию cellForRowAtIndexPath: и как добавить новую запись и перезагрузить таблицу? –