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

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

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

Показать сообщение отдельно
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. не бейте сильно тапками за чистоту кода, не было времени поприберать лишнее пока
 
Текущее время: 16:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru