iOS9 부터는 사용하지 못하는 UIAlertView

대신에 사용하는 UIAlertController 에 대해 알아봤습니다. 아래 링크에 샘플코드가  나와 있습니다.

http://rhammer.tistory.com/64

위에 소개된 샘플코드를 가지고 개인적으로 필요하여 아래 깃헙에 바꿔서 공유했습니다.

https://github.com/youp-han/AlertSampleInObjectiveC


저작자 표시 비영리 변경 금지
신고

posted by youp_han matrim


NSArry 내에 있는 내용을 NSLog 로 찍어 보려고 할때 간단하게 2 가지 방법이 있습니다.


1) NSLog(@"shopDetail = %@", shopDetail);


2) for 루핀 사용하기         

for (NSString *str in shopDetail) {

    NSLog(@"shopDetail = %@", str);

}


1) 번을 사용하든, 2)번을 사용하든 결과물은 같습니다.

2015-07-07 23:49:11.250 redCat[1471:24953] shopDetail = (

        {

        address = "XXXXX@gmail.com";

        businessHour = "11:00(11AM) ~ 20:00(8PM), \Uc2e0\Uc815,\Uad6c\Uc815\Uc5f0\Ud734,\Ucd94\Uc11d\Uc5f0\Ud734,\Ud06c\Ub9ac\Uc2a4\Ub9c8\Uc2a4\Ub0a0\Uc740 \Uc27d\Ub2c8\Ub2e4.";

        city = "\Uc11c\Uc6b8";

        country = "South Korea";

        description = "XXXXX @Apkoojung";

        latitude = "37.523809";

        lin2 = "\Uc6cc\Ud130\Uc2a4\Ud2b8\Ub9ac\Ud2b8";

        line1 = "\Uac15\Ub0a8\Uad6c \Uc2e0\Uc0ac\Ub3d9 550-14 1\Uce35";

        longitude = "127.024297";

        name = "\Uc555\Uad6c\Uc815\Uc810";

        number = "+82-2-111-ZZZZ";

        seqNo = 2;

        shopCode = 002;

    }

)


저작자 표시
신고

posted by youp_han matrim


UIWebview 를 사용하여 iOS 앱 화면에 모바일웹 화면을 띄우는 방법은 간단합니다.

스토리 보드를 이용한 방법이 아래 링크에 잘 나와있습니다. 소스 코드만 봐도 간단하지요?

- (void)viewDidLoad

{

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    [self goToURL:@"https://mobile.twitter.com/waterstreetjr"];

}


// displays the URL

-(void)goToURL:(NSString*) fullURL{

    NSURL *url = [NSURL URLWithString:fullURL];

    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

    [_webView loadRequest:requestObj];

}


이렇게 UIWebview 를 만들고 나서...


1. 화면이 나오면 로딩이 끝날 때까지 흰색화면으로 남게 되는데요, 음.. 아래 그림처럼 로딩 이미지가 떠주면 어떨까 싶어서 추가해봤습니다.



#import <UIKit/UIKit.h>


@interface HomeViewController : UIViewController<UIWebViewDelegate>

{

     UIActivityIndicatorView* loadingIndicator;

}

@property (weak, nonatomic) IBOutlet UIWebView *webView;

@property (strong, nonatomic) UIActivityIndicatorView *loadingIndicator;


-(void)goToURL:(NSString*) fullURL;

@end


- (void)viewDidLoad

{

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    [_webView setDelegate:self];

    [self addLoadingIndicatorToView];

    [self goToURL:@"https://mobile.twitter.com/waterstreetjr"];

}


// add loading indicator

-(void)addLoadingIndicatorToView{

    loadingIndicator= [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

    [loadingIndicator setCenter:CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2)];

    [self.view addSubview:loadingIndicator];


}


// displays the URL

-(void)goToURL:(NSString*) fullURL{

    NSURL *url = [NSURL URLWithString:fullURL];

    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

    [_webView loadRequest:requestObj];

}


- (void)webViewDidStartLoad:(UIWebView *)webView{

    NSLog(@"webViewDidStartLoad");

    [loadingIndicator startAnimating];

}


- (void)webViewDidFinishLoad:(UIWebView *)webView{

    NSLog(@"webViewDidFinishLoad");

    [loadingIndicator stopAnimating];

}


- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{

    NSLog(@"didFailLoadWithError");

}


동작이 잘 되는 부분은 확인 해 봤습니다. 


2) 로딩 화면이 보이지 않고, 로딩이 끝난 후에 보여지면 어떨까 생각해봤습니다. 예를 들면 테이블 뷰가 나오고 그 중에서 다음 화면이 웹뷰인 셀이 있습니다. 눌렀을 시 UIwebview 로 넘어갈 때 로딩이 끝난뒤 넘어가게 할 수도 있습니다.



넘어가기 전 테이블 뷰에서 다음 화면인 웹 뷰로 가는 셀을 터치 했을 경우, pushViewController 를 부르기 전에, 웹뷰 를 미리 로딩을 할 수 있도록 합니다.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // check indexPath... myWebView = [[MyWebViewController alloc] init]; myWebView.delegate = self; [myWebView preLoadView]; }

웹뷰가 로딩이 끝나면 다음 화면으로 뷰가 넘어가게 됩니다.

- (void)webViewDidFinishLoad:(UIWebView *)webView { [self.navigationController pushViewController:myWebView animated:YES]; [myWebView release]; }

아직 테스트 된 코드는 아니지만, 실제 코드 적용 과 함께 테스트 후 영상을 올리도록 하겠습니다. 

저작자 표시
신고

posted by youp_han matrim


참고 : http://www.raywenderlich.com/5492/working-with-json-in-ios-5


기본적인 컨셉은 위 링크에서 익혔고..


실질적인 iOS7 에서의 코딩은 아래 링크를 보고 연습했습니다.


따라하기 : http://thedarkdev.blogspot.com.au/2013/09/web-service-apps-in-ios7-json-with.html


좀더 잘 설명되어 있는 곳 : http://dadabeatnik.wordpress.com/2013/11/01/parsing-json-in-ios/


JSON data in table formatJSON data



좀더 정리되면 포스팅 업데이트 하도록 하겠습니다.

저작자 표시
신고

posted by youp_han matrim


간단한 로그인 화면 만들기 샘플입니다.


스텝바이스텝 으로 xcode5, ios7 용으로 스토리보드를 이용하여 로그인 화면 만드는 방법이 자세히 나와있습니다.


http://dipinkrishna.com/blog/2013/12/ios-login-screen-tutorial-xcode-5-ios-7-storyboard-json/


저작자 표시
신고

posted by youp_han matrim


iOS 에서 사용할 Json 파서를 찾다 가장 빠르다고 평이 나 있는 JSONKit  찾아 소개합니다.


Objective-C 로 만들어진 json 파서 중에선 가장 빠르고 시리얼라이즈도 가장 바르게 측정되었네요.

Deserialize from JSONSerialize to JSON


저작자 표시
신고

posted by youp_han matrim

objective-C 로 iOS 에서 xcode 5 로 간단한 테이블 뷰 만드는 방법 설명입니다.

금방 따라할 듯 싶어, 링크만 걸어 둡니다.



SimpleTable App

저작자 표시
신고

posted by youp_han matrim



폰갭 phoneGap 용 MIT 라이센스 달려나온 push notification 입니다.

하지만 iOS 용만 사용하면 될것 같아서, 참고해 보려고 합니다.


https://github.com/phonegap-build/PushPlugin.git


소스 테스트 이후, git hub 에 따로 iOS 용 공개하려고 합니다. 위의 링크 소스와 같을 듯 싶지서도.. :)


저작자 표시
신고

posted by youp_han matrim

The current deployment target does not support automated __weak references


iOS 5.0 이상에서 지원하는 ARC 를 사용하여 어플을 만들다 보니 ARC 는 무척 편하더군요. 근데 iOS5.0 이전 버전들을 지원하려면 어떻게 해야 할까 고민하다 인터넷을 뒤져보니.. 어느 멋진 분이 벌써 만들어놨네요. 


PLWeakCompatibility 를 다운받아 압축을 풀고



  1. PLWeakCompatibilityStubs.m 이 파일을 프로젝트에 넣어주세요 (전 h 파일도 같이 넣어줬어요)
  2. 그리고 xCode Target Settings 에 있는 Other C Flags 값을 -Xclang -fobjc-runtime-has-weak 로 바꿔주시면 됩니다.



타겟 클래스에 -release 와 -dealloc 을 적절히 섞어 넣어 주는 형식이라고 합니다. 디폴트로 PLWeakCompatibility 는 __weak 핸들링을 위해 MAZeroingWeakRef 를 사용합니다. MAZeroingWeakRef 를 사용하고 있다면, 있는걸 쓰겠지만, 없다면 내부적으로 알아서 처리하기 떄문에 뭐 그것도 상관은 없다고 하네요.


테스트 해보니 일단 위의 오류들은 깨끗하게 없어지네요. 작동을 잘 한다는 뜻이겠지요?


저작자 표시
신고

posted by youp_han matrim

[출처: http://stackoverflow.com/questions/6101286/making-a-button-call-a-phone-number-in-xcode ]

어플 내에서 버튼을 누르면 특정 전화번호로 전화를 걸어야 하는 기능이 들어가야 해서.. 찾아보니

아래와 같이 구현하면 바로 되네요.. 대신 전화번호 스트링의 형식이 있어요..

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:PhoneNo]]; 

PhoneNo 는  @"tel:2135554321"

이렇게 넘겨야 하는군요. 중간에 " - " 이 있어도 되구요. 제가 테스트 한 번호는..


@"tel:010-222-3333" 입니다. 

-(void)PhoneCall:(NSString*)PhoneNo{
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:PhoneNo]];
}    

신고

posted by youp_han matrim



티스토리 툴바