Форум программистов, компьютерный форум CyberForum.ru

Сортировка в UITableView - Программирование iOS

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование iOS Календарь внутри приложения и эвенты в нем http://www.cyberforum.ru/ios-dev/thread808457.html
Доброго времени суток! Столкнулся с необходимостью добавить собственный календарь в свое приложение. Понаходил несколько готовых библиотек, но правда не все смог подключить. В общем на данный момент остановился на VurigCalendar. Из просторов интернета я нашел как можно добавлять события в нативный календарь с помощью EventKit. Так вот в чем вопрос: каким образом можно добавлять события в...
Программирование iOS UIButton bug? steps2reproduce: В общем создаем UIButton, кладем в него картинку(у меня это было из ниба) Затем делаем - ; и видим - что текст залэйаутился по центру, а картинка осталась... При том, что если писать: ; или даже forState:UIControlStateNormal]; http://www.cyberforum.ru/ios-dev/thread808217.html
Программирование iOS Переименование
Нужно переименовать приложение GamePlayer на другое название. Сказать зачем? Наверно многие уже знают его функцию - поиск адресов со значениями (подобие Артмани или Чит енжин). Одна прога не хочет работать и вырубается,когда в процессе висит GamePlayer. Ясен пень это защита. Это возможно как то реализовать? Добавлено через 20 часов 50 минут Uppppppppp lvl
Картинки для игор Программирование iOS
Какие картинки (с каким разрешением) можно использовать для спрайтов?
Программирование iOS Парсинг CSV Файла http://www.cyberforum.ru/ios-dev/thread806140.html
Помогите пожалуйста написать код парсера для csv файла на objective-C csv файл состоит из 6 столбцов(Цитата Перевод Источник ОЦЕНКА ДАТА ПРАЗДНИК) и 808 строк соот-но
Программирование iOS Нужно всего лишь вставить эмблему при запуске, сменить название в главном меню да вставить текст в эбаут Уважаемые! Пишет вам человек гуманитарного склада ума, которому нужна помощь от склада ума не гуманитарного! Дело в том, что у меня в багаже есть приложение, которое готово на 99% - но, так уж вышло, что занявшись другими, более важными проектами - я его оставил. А теперь появился дедлайн через несколько дней. Это мобильный бизнес-тренажер, с картинками и текстом, сделанный по заказу одной... подробнее

Показать сообщение отдельно
opi
7 / 7 / 1
Регистрация: 09.11.2010
Сообщений: 69
21.03.2013, 13:57  [ТС]     Сортировка в UITableView
Столкнулся с проблемой, когда нужно сортировать данные не по ключу, а по динамическим данным, которые вычисляются в процессе заполнения таблицы. Собственно написан код ниже. Можно ли как то сортировать таблицу по тексту в ней? В моем случае это detailTextLabel.

В коде я пытаюсь рассчитать данные priorityIndex в момент заполнения таблицы. Далее заполняю ячейку в Core Data этими расчетами и из нее выдираю данные и вывожу их в detailTextLabel. Знаю, что как то через чур замудрено, но в связи с отсутствием опыта на Obj-C ничего лучше придумать не смог. Во всяком случае оно работает. Но, когда я пытаюсь сортировать таким образом саму Core Data по ключу priorityIndex, то ничего не сортирует:

Objective-C
1
2
NSSortDescriptor *sortDescriptorPriorityIndex = [[NSSortDescriptor alloc]initWithKey:@"priorityIndex" ascending:YES];
    fetchRequest.sortDescriptors = @[sortDescriptorPriorityIndex];
Собственно я вот думаю, а можно ли как то сортировать саму таблицу по имеющимся в ней данным? При этом не добавляя ничего в саму Core Data.

PriorityTVC
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
//
//  PriorityTVC.m
//  TaskBoard
//
//  Created by Владислав on 13.03.13.
//  Copyright (c) 2013 Vladislav Kovalyov. All rights reserved.
//
 
#import "PriorityTVC.h"
 
@interface PriorityTVC ()
 
@end
 
@implementation PriorityTVC
 
@synthesize tasks;
@synthesize taskIndex, priorityIndex, dateIndexValue, taskCountIndexValue;
@synthesize currendDate, completionDate;
 
- (NSManagedObjectContext *)managedObjectContext {
    NSManagedObjectContext *context = nil;
    id delegate = [[UIApplication sharedApplication] delegate];
    if ([delegate performSelector:@selector(managedObjectContext)]) {
        context = [delegate managedObjectContext];
    }
    return context;
}
 
- (void)viewDidLoad
{
    [super viewDidLoad];
 
    self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"common_bg.png"]];
    self.tableView.backgroundColor = [UIColor clearColor];
    [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
}
 
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
 
}
 
-(void)viewWillAppear:(BOOL)animated{
    NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Tasks"];
    
   /* NSSortDescriptor *sortDescriptorProgress = [[NSSortDescriptor alloc] initWithKey:@"porgress" ascending:YES];
    NSSortDescriptor *sortDescriptorPriorityIndex = [[NSSortDescriptor alloc]initWithKey:@"priorityIndex" ascending:YES];
    fetchRequest.sortDescriptors = @[sortDescriptorPriorityIndex,sortDescriptorProgress];*/
    self.tasks = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
    
    [self.tableView reloadData];
}
 
 
 
#pragma mark - Table view data source
 
 
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}
 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.tasks.count;
}
 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"TaskCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    
    NSManagedObject *task = [self.tasks objectAtIndex:indexPath.row];
    
    taskIndex = indexPath.row + 1;
    
    NSNumber *nProgress = [task valueForKey:@"porgress"];
    float progressValue = ([nProgress floatValue] / 100);
    
    completionDate = [task valueForKey:@"finishDate"];
    currendDate = [NSDate date];
    
    NSCalendar *calendar = ([[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]);
    NSDateComponents *components = [calendar components:NSDayCalendarUnit fromDate:currendDate toDate:completionDate options:0];
    
    if (progressValue == 1) {
        dateIndexValue = 0.4;
        taskCountIndexValue = 0.1;
    } else {
        if (components.day <= 3) {
            dateIndexValue = 0.07;
        } else if (components.day >= 4 && components.day <= 10){
            dateIndexValue = 0.12;
        } else if (components.day >= 11 && components.day <= 20){
            dateIndexValue = 0.20;
        } else if (components.day >= 21 && components.day <= 30){
            dateIndexValue = 0.30;
        } else if (components.day >= 31){
            dateIndexValue = 0.4;
        }
        
        if (tasks.count >= 2) {
            taskCountIndexValue = 0.1;
        } else if (tasks.count <= 3 && tasks.count >= 5){
            taskCountIndexValue = 0.07;
        } else if (tasks.count <= 6 && tasks.count >= 10){
            taskCountIndexValue = 0.03;
        } else if (tasks.count >= 11){
            taskCountIndexValue = 0;
        }
    }
 
    
    priorityIndex = (progressValue / 2) + dateIndexValue + taskCountIndexValue;
    
    NSNumber *aPriorityIndex = [NSNumber numberWithFloat:priorityIndex];
    
    [tasks setValue:aPriorityIndex forKey:@"priorityIndex"];
    
    NSNumber *nIndexPriority = [task valueForKey:@"priorityIndex"];
    float fIndexPriority = [nIndexPriority floatValue];
    
    cell.textLabel.text = [NSString stringWithFormat:@"%i. %@", taskIndex,[task valueForKey:@"taskName"]];
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%1.2f", fIndexPriority]; //priorityIndex];
    NSManagedObjectContext *context = [self managedObjectContext];
    
    NSError *error = nil;
    // Save the object to persistent store
    if (![context save:&error]) {
        NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
    }
 
    
    UIImage *background = [UIImage imageNamed:@"cellbackground.png"];
    
    UIImageView *cellBackgroundView = [[UIImageView alloc] initWithImage:background];
    cellBackgroundView.image = background;
    cell.backgroundView = cellBackgroundView;
    
    return cell;
}
 
 
#pragma mark - Table view delegate
 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
}
 
@end


P.S. не бейте сильно тапками за чистоту кода, не было времени поприберать лишнее пока
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru