2013年9月23日 星期一

[iOS] iOS7 狀態欄無法消失?

//在 root ViewController 中,viewDidload 函式裡增加
if([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])
{
    // iOS 7
    [self prefersStatusBarHidden];
    [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
else
{
    // iOS 6
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}


// 增加此函式
- (BOOL)prefersStatusBarHidden
{
    return YES;
}

如此即可相容 iOS6 & iOS7 的情況。

2013年9月11日 星期三

[iOS] NSMutableArray 排序小記

一般在陣列排序都使用以下方式:
NSSortDescriptor *countSorter = [NSSortDescriptor sortDescriptorWithKey:@"count" ascending:YES];

[self.listData sortUsingDescriptors:[NSArray arrayWithObject:countSorter]];
[countSorter release];


但,發現如果 key 值是整數的話,就要加上 comparator 來判斷才可。
NSSortDescriptor *countSorter = [NSSortDescriptor sortDescriptorWithKey:@"count" ascending:YES comparator:^(id obj1, id obj2)
{
    if([obj1 integerValue] > [obj2 integerValue])
    {
        return (NSComparisonResult)NSOrderedDescending;
    }
    if([obj1 integerValue] < [obj2 integerValue])
    {
        return (NSComparisonResult)NSOrderedAscending;
    }
    return (NSComparisonResult)NSOrderedSame;
}];

[self.listData sortUsingDescriptors:[NSArray arrayWithObject:countSorter]];
[countSorter release];


如果是判斷內容是 NSDate 的話,使用以下方式:
NSSortDescriptor *dateDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"timestamp" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];
self.listData = [[self.listData sortedArrayUsingDescriptors:sortDescriptors] mutableCopy];