В настоящее время я работаю над простым приложением для отслеживания тренировок, где у меня есть представление таблицы и каждый план плана тренировки загружается в каждую ячейку.UITableViewCell Subtitle не обновляется корректно из массива
Я использую субтитры для стиля ячейки таблицы, которые я выбрал в раскадровке.
Я помещал каждое название упражнений на текстовую метку и количество повторений и наборов на подробную метку.
моя проблема в том, что данные для упражнений правильно загружаются в текстовую метку каждой строки в отношении массива тренировки, но информация о повторах & не загружена правильно.
Week1_3ViewController.m
#import "Week1_3ViewController.h"
#import "SWRevealViewController.h"
@interface Week1_3ViewController()
@property (nonatomic) NSMutableArray *workouts;
@property (nonatomic) NSArray *reps;
@property (nonatomic) NSArray *days;
@end
@implementation Week1_3ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationController.navigationBar.hidden = YES;
self.workouts = @[@{@"name" : @"SQUATS", @"days" : @"DAY 1"}, @{@"name" : @"BENT OVER ROWS", @"days" : @"DAY 1"}, @{@"name" : @"BENCH PRESS", @"days" : @"DAY 1"}, @{@"name" : @"OVERHEAD PRESS", @"days" : @"DAY 1"}, @{@"name" : @"EXTERNAL ROTATIONS", @"days" : @"DAY 1"}, @{@"name" : @"SEATED CALF RAISES", @"days" : @"DAY 1"}, @{@"name" : @"MOUNTAIN CLIMBERS", @"days" : @"DAY 1"}, @{@"name" : @"PLANKS", @"days" : @"DAY 1"}, @{@"name" : @"DEADLIFT", @"days" : @"DAY 2"}, @{@"name" : @"KNEELING LANDMINE PRESS", @"days" : @"DAY 2"}, @{@"name" : @"ALT. ARNOLD PRESS", @"days" : @"DAY 2"}, @{@"name" : @"ALT. FRONT LUNGE", @"days" : @"DAY 2"}, @{@"name" : @"PULL OVER", @"days" : @"DAY 2"}, @{@"name" : @"WEIGHTED CRUNCHES", @"days" : @"DAY 2"}, @{@"name" : @"SIDE PLANKS", @"days" : @"DAY 2"}, @{@"name" : @"FRONT SQUAT", @"days" : @"DAY 3"}, @{@"name" : @"T-BAR ROW", @"days" : @"DAY 3"}, @{@"name" : @"DIPS", @"days" : @"DAY 3"}, @{@"name" : @"UPRIGHT ROW", @"days" : @"DAY 3"}, @{@"name" : @"GLUTE BRIDGES (WEIGHTED)", @"days" : @"DAY 3"}, @{@"name" : @"STANDING CALF RAISES", @"days" : @"DAY 3"}, @{@"name" : @"RUSSIAN TWIST", @"days" : @"DAY 3"}].mutableCopy;
self.reps = @[@"15, 12, 10, 8, 6", @"12, 10, 8, 6, 6", @"15, 12, 10, 8, 6", @"12, 10, 8, 6, 6", @"3 x 12", @"3 x 15", @"3 x 30 SECONDS", @"3 x 30 SECONDS", @"15, 12, 10, 8, 6", @"15, 12, 10, 8, 8", @"12, 10, 8, 8, 6", @"5 x 10", @"3 x 15", @"3 x 15", @"3 x 30 SECONDS", @"15, 12, 10, 8, 6", @"12, 10, 8, 8, 6", @"5 x 15", @"15, 12, 10, 8, 8", @"3 x 10", @"3 x 15", @"3 x 30 (15 EACH SIDE)"];
self.days = @[@"DAY 1", @"DAY 2", @"DAY 3"];
self.title = @"WEEK 1-3, PHASE 1";
SWRevealViewController *revealViewController = self.revealViewController;
if (revealViewController)
{
[self.sidebarButton setTarget: self.revealViewController];
[self.sidebarButton setAction: @selector(revealToggle:)];
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - DataSource helper methods
- (NSArray *) itemsInDays:(NSString *)targetDays {
NSPredicate *matchingPredicate = [NSPredicate predicateWithFormat:@"days == %@", targetDays];
NSArray *daysItems = [self.workouts filteredArrayUsingPredicate:matchingPredicate];
return daysItems;
}
- (NSInteger)numberOfItemsInDays:(NSString *)targetDays {
return [self itemsInDays:targetDays].count;
}
- (NSDictionary *)itemAtIndexPath:(NSIndexPath *)indexPath {
NSString *days = self.days[indexPath.section];
NSArray *daysItems = [self itemsInDays:days];
NSDictionary *item = daysItems[indexPath.row];
return item;
}
- (NSInteger)itemIndexForIndexPath:(NSIndexPath *)indexPath {
NSDictionary *item = [self itemAtIndexPath:indexPath];
NSInteger index = [self.workouts indexOfObjectIdenticalTo:item];
return index;
}
#pragma mark - table view datasource
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return self.days.count;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [self numberOfItemsInDays:self.days[section]];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"workoutrow";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSDictionary *workouts = [self itemAtIndexPath:indexPath];
cell.textLabel.text = workouts[@"name"];
cell.detailTextLabel.text = [_reps objectAtIndex:indexPath.row];
// NSLog(@"cell.textLabel.text %@", cell.textLabel.text);
[cell layoutIfNeeded];
return cell;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
return self.days[section];
}
@end
и вот мое приложение Тренажер работает результат. [! [Результат Тренажер] [1]] [1]
http://i.stack.imgur.com/VQWzO.png
вы можете увидеть, что метка подзаголовок "15, 12, 10, 8, 6" из "DEAD LIFT" повторяется для некоторых Причина, которую я не могу найти.
в соответствии с массивом «повторений», который я установил, это не должно быть так.
btw, это табличное представление отделяется от другой ячейки таблицы, которая является ячейкой tableview в боковой панели в моем коде.
жаль не мог загрузить изображение из-за репутации
спасибо заранее
Я вижу много «15, 12, 10, 8, 6» в вашем массиве reps, вы проверили данные? –
@jinhualiao данные верны. если вы посмотрите на массив и захваченное изображение, отображаемая метка отличается от –
, можете ли вы вставить результат своих элементовInDays: method? Я думаю, что ваш filterArray не получил нужного результата. –