'아이폰'에 해당되는 글 30건

  1. 2012.02.06 [objective c] 탭바 포커스 변경하기
  2. 2012.02.02 UINavigationController custom
  3. 2012.01.20 [objective c] 기존 프로젝트에 core data 추가하기
  4. 2012.01.13 [objective c] 간단하게 경고 팝업(UIAlertView) 띄우기
  5. 2012.01.05 UIImage to NSData 변환
  6. 2011.12.27 [아이폰] 웹뷰에서 이벤트 가로채기
  7. 2011.12.20 [iphone/objective c] 어플 내의 document에 데이터 저장하기
  8. 2011.12.19 [xcode] objective c와 c++코드 같이 사용하기
  9. 2011.12.14 [아이폰] 탭바 숨기기
  10. 2011.12.08 [Objective C] NSArray와 NSMutableArray의 차이점
2012. 2. 6. 15:29

[objective c] 탭바 포커스 변경하기

[self.tabBarController setSelectedIndex:0];
2012. 2. 2. 17:20

UINavigationController custom

http://reysion.tistory.com/15
2012. 1. 20. 13:36

[objective c] 기존 프로젝트에 core data 추가하기

1. framework에 CoreData.framework 추가
2. Xcode에서 New File -> IOS 탭 -> Core Data(4.3 기준 이하 버전은 아마 Resource) -> Data model
3. delegate 에 아래의 내용을 추가

--- 헤더
#import <CoreData/CoreData.h>

@interface AppDelegate : NSObject <UIApplicationDelegate> {
  NSManagedObjectModel *managedObjectModel;
  NSManagedObjectContext *managedObjectContext;
  NSPersistentStoreCoordinator *persistentStoreCoordinator;

  (...Existing Application Code...)
}

@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;

- (NSString *)applicationDocumentsDirectory;

(...Existing Application Code...)
@end

--- delegate.m
@implementation AppDelegate
//Explicitly write Core Data accessors
- (NSManagedObjectContext *) managedObjectContext {
  if (managedObjectContext != nil) {
    return managedObjectContext;
  }
  NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
  if (coordinator != nil) {
    managedObjectContext = [[NSManagedObjectContext alloc] init];
    [managedObjectContext setPersistentStoreCoordinator: coordinator];
  }

  return managedObjectContext;
}

- (NSManagedObjectModel *)managedObjectModel {
  if (managedObjectModel != nil) {
    return managedObjectModel;
  }
  managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];

  return managedObjectModel;
}

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
  if (persistentStoreCoordinator != nil) {
    return persistentStoreCoordinator;
  }
  NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory]
                      stringByAppendingPathComponent: @"<Project Name>.sqlite"]];
  NSError *error = nil;
  persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]
                                 initWithManagedObjectModel:[self managedObjectModel]];
  if(![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
                                 configuration:nil URL:storeUrl options:nil error:&error]) {
    /*Error for store creation should be handled in here*/
  }

  return persistentStoreCoordinator;
}

- (NSString *)applicationDocumentsDirectory {
  return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}

(...Existing Application Code...)

- (void)dealloc {
  [managedObjectContext release];
  [managedObjectModel release];
  [persistentStoreCoordinator release];

  (...Existing Dealloc Releases...)
}
@end

4. ViewController 에도 아래 내용을 추가

--- 헤더
@interface ViewController : UIViewController <NSFetchedResultsControllerDelegate> {
  NSFetchedResultsController *fetchedResultsController;
  NSManagedObjectContext *managedObjectContext;

(...Existing Application Code...)
}

@property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@end

--- ViewController.m
@implementation ViewController
@synthesize fetchedResultsController, managedObjectContext;

(...Existing Application Code...)
@end

5. 아래와 같이 사용
ViewController.managedObjectContext = self.managedObjectContext;
2012. 1. 13. 13:56

[objective c] 간단하게 경고 팝업(UIAlertView) 띄우기

UIAlertView *alert = [[UIAlsertView alloc] initWithTitle:@"타이틀"
                                                 message:@"메시지"
                                                delegate:해당 델리게이트
                                       cancelButtonTitle:@"취소 버튼 타이틀"
                                        otherButtonTitle:@"예", @"추가 버튼", nil];
[alert show];
[alert release];
2012. 1. 5. 17:04

UIImage to NSData 변환

UIImage *img = [UIImage imageNamed:@"test.png"];
NSData *dataObj = UIImageJPEGRepresentation(img, 1.0);


NSData to UIImage

UIImage *image = [[UIImage alloc] initWithData:obj];
UIImageView = [[UIImageView] alloc] initWithImage:image];
2011. 12. 27. 10:31

[아이폰] 웹뷰에서 이벤트 가로채기

참고 : http://j2enty.tistory.com/86

웹에서 발생하는 이벤트를 어플 내에서 처리하려면 UIWebViewDelegate의 webView: shouldStartLoadWithRequest: navigationType: 메서드를 이용하면 된다.

간단한 예제

1. 웹뷰가 있는 View에 <UIWebViewDelegate> 프로토콜을 추가해주고, 인터페이스 빌더에서 delegate를 연결해준다.

2. 아래의 메서드를 구현해준다.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    NSString *requestStr = [[request URL] absoluteString];
   
    NSLog(@"%@", requestStr);
   
    if([requestStr isEqualToString:@"http://m.search.naver.com/search.naver?query=&where=m&sm=mtp_hty.idx"])
    {
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"모바일 웹 전체서비스" message:@"테스트 중입니다." delegate:self cancelButtonTitle:@"확인" otherButtonTitles:nil, nil];
        [alertView show];
        [alertView release];
       
        return NO;
    }
   
    return YES;
}

3. 실행 후 네이버를 실행하여 검색 버튼을 누르면 팝업이 뜨는 것을 확인할 수 있다.

2011. 12. 20. 10:01

[iphone/objective c] 어플 내의 document에 데이터 저장하기

출처 : http://blog.xiles.net/333
          http://mongkoon.com/main/bbs/board.php?bo_table=06_15&wr_id=144

- (BOOL)writeApplicationData:(NSData *)data toFile:(NSString *)fileName {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    if (!documentsDirectory) {
        NSLog(@"Documents directory not found!");
        return NO;
    }
    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];
    return ([data writeToFile:appFile atomically:YES]);
}
 
 
* Array 저장하고 불러오는 예제인데 개별 파일에 대해서도 동일하게 동작한다.
 
파일 저장
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullFileName = [NSString stringWithFormat:@"%@/arraySaveFile", documentsDirectory];
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:@"One"];
[array addObject:@"Two"];
[array addObject:@"Three"];
[array writeToFile:fullFileName atomically:NO];

파일 불러오기
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullFileName = [NSString stringWithFormat:@"%@/arraySaveFile", documentsDirectory];
NSMutableArray *array = [[NSMutableArray alloc] initWithContentsOfFile:fullFileName];


2011. 12. 19. 11:52

[xcode] objective c와 c++코드 같이 사용하기

1. c++로 만들어진 파일의 확장자를 cpp -> mm으로 바꿔서 프로젝트에 넣어준다.

2. c++에 있는 클래스나 메서드등을 사용하게 되는 소스들도 mm으로 바꿔준다.
2011. 12. 14. 15:08

[아이폰] 탭바 숨기기

하단의 탭바를 숨기거나 다시 나타가게 하는 방법은 아래와 같다.

// 탭바를 숨기는 메서드
- (void)hideTabbar:(UITabBarController *)tabbarcontroller {
    for (UIView *view in tabbarcontroller.view.subviews) {
        if ([view isKindOfClass:[UITabBar class]]) {
            [view setFrame:CGRectMake(view.frame.origin.x, 480, view.frame.size.width, view.frame.size.height)];
        } else {
            [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 480)];
        }
    }
}

// 탭바를 다시 나타나게하는 메서드
- (void)showTabbar:(UITabBarController *)tabbarcontroller {
    for(UIView *view in tabbarcontroller.view.subviews)       
    {       
        if([view isKindOfClass:[UITabBar class]]) {           
            [view setFrame:CGRectMake(view.frame.origin.x, 431, view.frame.size.width, view.frame.size.height)];           
        }       
        else {           
            [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 431)];           
        }       
    }
}

사용법은 예를 들어 특정 버튼을 누르면 사라지게 한다면
해당 버튼의 IBAction 메서드에서 [self hideTabbar:self.tabBarController] 식으로 호출해주면 된다.
2011. 12. 8. 10:14

[Objective C] NSArray와 NSMutableArray의 차이점

생성 코드는 비슷하다.

NSArray *arr = [[NSArray alloc] initWithObjects:@"a", @"b", @"c", nil];
NSMutable *mtarr = [[NSMutable alloc] initWithObject:@"a", @"b", @"c", nil];

이 두 배열의 차이점은
NSArray는 생성/초기화 후에는 수정/추가/삭제가 불가능하지만
NSMutable은 가능하다는 것이다.