2

カレンダーやリマインダーを並べ替える方法はありますか?sortIndexプロパティなどが見つかりません...リマインダーアプリはどのようにアイテムを並べ替えますか?

よろしくお願いします

4

3 に答える 3

1

現在、iOS 6 SDK では、リマインダー アプリで使用される並べ替えインデックスへのパブリック アクセスはありません。アプリ内で他の方法を使用して並べ替える必要があります。

于 2013-01-17T08:30:50.537 に答える
0

これを使用して、EKReminders を優先度順に並べ替えました

NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"priority" ascending:YES] ;
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray = [unsortedArray sortedArrayUsingDescriptors:sortDescriptors];
于 2012-10-26T01:04:03.550 に答える
0

これは、2 つのリマインダー (EKReminder インスタンス) を比較するメソッドを含む EKReminder のカテゴリです。次に、NSArray メソッドの「sortUsingSelector」を次のように使用します。

[myReminders sortUsingSelector:@selector(compare:)];

並べ替え基準は次のとおりです。 1) 完了したリマインダーはすべて、未完了の (未完了の) リマインダーの下に表示されます。

2) 開いているリマインダーは、アラームの日付 (alarm.absoluteDate) で並べ替えられます。

3) 完了したリマインダーは、completedDate で並べ替えられます

お役に立てれば!

import "EKReminder+Sort.h"

@implementation EKReminder (ソート)

-(NSComparisonResult)compare:(EKReminder*)reminder { NSComparisonResult 結果 = NSOrderedSame;

if(self.completed) {
    if(reminder.completed) {
        result = [reminder.completionDate compare:self.completionDate];
    } else {
        result = NSOrderedDescending;
    }
} else {
    if(reminder.completed) {
        //do nothing
        result = NSOrderedSame;
    } else {
        NSDate *date1 = [self.alarms.firstObject absoluteDate];
        NSDate *date2 = [reminder.alarms.firstObject absoluteDate];

        if(date1) {
            if(date2) {
                result = [date1 compare:date2];
            } else {
                result = NSOrderedDescending;
            }
        } else {
            //do nothing
            result = NSOrderedSame;
        }
    }
}

return result;

}

@終わり

于 2016-02-23T12:35:13.373 に答える