2014年3月11日 星期二

「無條件進位」、「無條件捨去」、「四捨五入」、「滿千加逗號」

// 四捨五入
round(number);
// 無條件捨去
down = floor(number);
// 無條件進位
up = ceil(number);


//所有的數字轉文字的格式,都可以在NSNumberFormatter class中找到。
//滿千加逗號
+ (NSString *)formatNumberWithComma:(NSNumber *)number
{
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
    //設顯示小數點下第二位
    [formatter setMaximumFractionDigits:2];
    //設千分位的逗點
    [formatter setUsesGroupingSeparator:YES];
    [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
        
    double entryFieldFloat = [number doubleValue];
    if ([number.stringValue rangeOfString:@"."].length == 1) {
        formatter.alwaysShowsDecimalSeparator = YES;
        return [formatter stringFromNumber:[NSNumber numberWithDouble:entryFieldFloat]];
    }
    
    formatter.alwaysShowsDecimalSeparator = NO;
    return [formatter stringFromNumber:[NSNumber numberWithDouble:entryFieldFloat]];

}

2014年3月10日 星期一

取用特定的Subview實體

//我們想要指定一個View去取用
UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"btn"]];
            [iv setTag:978];

//直接用viewWithTag就可以針對我們想取用的View去抓到實體
UIView *_subview = [cell.contentView viewWithTag:978];
                if( _subview )
                {
                    [_subview removeFromSuperview];
                }

在switch中要加上判斷的code,要用{ }大刮號

NSString *title, *subtitle;
        switch (indexPath.row) {
            case PROFILE_NAME:
                title = @"User name";
                subtitle = _userEntity.name;
                break;
            case PROFILE_BIRTHDAY:
                title = @"Birthday";
                subtitle = [_userEntity.birthday yyyy__MM__dd];
                break;
            case PROFILE_HEIGHT:
                title = @"Height";
                if (unitUSA) {
                    NSInteger feet, inch;
                    [UserEntity translateMeter:_userEntity.height.integerValue toFeet:&feet inch:&inch];
                    subtitle = [NSString stringWithFormat:@"%d'%d\"", feet, inch];
                } else
                    subtitle = [NSString stringWithFormat:@"%d cm", _userEntity.height.integerValue];
                break;
            case PROFILE_WEIGHT:
                title = @"Weight";
                subtitle =unitUSA ? [NSString stringWithFormat:@"%.1f lbs", [UserEntity translateLbFromKg:_userEntity.weight.integerValue]] : [NSString stringWithFormat:@"%d kg", _userEntity.weight.integerValue];
                break;
            case PROFILE_STRIDE:
                title = @"Stride";
                subtitle = unitUSA ? [NSString stringWithFormat:@"%d\"", (int)(_userEntity.stride.integerValue / 2.54)] : [NSString stringWithFormat:@"%d cm", _userEntity.stride.integerValue];
                break;
            case PROFILE_EMAIL:
                title = @"Email";
                subtitle = [apis getUserEmail];
            {
                UIView *_subview = [cell.contentView viewWithTag:978];
                if( _subview )
                {
                    [_subview removeFromSuperview];
                }
                
            }
                break;
            default:
                break;

        }

一次移除所有subview的方式

[[someUIView subviews]
 makeObjectsPerformSelector:@selector(removeFromSuperview)];

2014年3月6日 星期四

UIAlertView的慣用法

//UploadViewController.h

@interface UploadViewController : UIViewController <UIAlertViewDelegate>



//UploadViewController.m

- (IBAction)logoutPressed:(id)sender
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Logout" message:@"Are you sure you want to logout?" delegate:self cancelButtonTitle:@"NO" otherButtonTitles:@"YES", nil];
    [alert show];
}

- (void)logout
{
    //TODO:Implement Logout code here...
}


#pragma mark - UIAlertView Delegate

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == alertView.firstOtherButtonIndex) {
        [self logout];
    }

}

2014年3月3日 星期一

NSMutableArray的addObject是直接加入pointer而不是copy一份進去

NSMutableArray *array = [NSMutableArray new];
NSNumber *number = [[NSNumber new];
For (int i = 0, i<10 , i++){
   number = [NSNumber numberWithInt:i];
   [array addObject:number];
}
這樣的結果會是
10
10
10
10
10
10
10
10
10
10


NSMutableArray *array = [NSMutableArray new];
For (int i = 0, i<10 , i++){
   NSNumber *number = [[NSNumber new];
   number = [NSNumber numberWithInt:i];
   [array addObject:number];
}
而這樣的結果才會是
1
2
3
4
5
6
7
8
9
10

2014年3月2日 星期日

抓取另一個storyboard上的view controller

YourViewControllerClass *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController"];