May 16, 2011

2011. 5. 16. 00:38 from Development Log


 처음 보여지는 지도 UI부분을 상당가량 수정하고 있습니다. 이번 버전에서 검색 기능과 북마크 기능을 추가하려다 보니 대대적인 UI수정이 필요했습니다. 여타 버스앱과 같이 아래쪽에 탭바를 두어 여러개의 화면으로 구성할 방법도 생각해 보았지만 그것보다는 기본앱인 구글맵UI 형태를 많이 참고하였습니다. 검색을 위한 창을 다른 화면으로 두는 것이 아니라 화면 이동없이 한 화면 상에서 가능하도록 구현 중입니다.

'Development Log' 카테고리의 다른 글

Springboot Docker Image  (0) 2020.09.06
Docker MySQL  (0) 2020.09.05
OSX OpenJDK 설치  (0) 2020.09.04
April 16, 2013  (0) 2013.04.16
청주버스 1.03.52 Release (April 29, 2011)  (0) 2011.05.02
Posted by NuBiFoRM :

Window-based Application 으로 프로젝트를 생성한다. 여기서는 프로젝트명을 Sample 이라고 하였다.



MainWindow.xib 파일을 선택하여 delete 키를 눌러 삭제한다.


Also Move to Trash 를 선택하여 프로젝트에서 완전히 삭제한다.



Sample-Info.plist 파일을 열고 Main nib file base name 항목을 삭제한다.


main.m 파일을 다음과 같이 수정한다.



#import <UIKit/UIKit.h>


int main(int argc, char *argv[]) {

    

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    int retVal = UIApplicationMain(argc, argv, nil, @"SampleAppDelegate");

    [pool release];

    return retVal;

}


SampleAppDelegate.h 파일에서 다음과 같이 @property 부분을 삭제한다.

#import <UIKit/UIKit.h>


@interface SampleAppDelegate : NSObject <UIApplicationDelegate> {

    UIWindow *window;

}


@property (nonatomic, retain) IBOutlet UIWindow *window;


@end


SampleAppDelegate.m 파일에서 @synthesize 부분을 삭제한다.

@synthesize window;


application:didFinishLaunchingWithOption: 메서드를 다음과 같이 구현해 준다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    

    // Override point for customization after application launch.

    

    window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    

    [window makeKeyAndVisible];

    

    return YES;

}


이로써 IB가 완전히 제거된 Window-based Application 프로젝트가 생성되었다.

 
Posted by NuBiFoRM :

NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"list.plist"];

NSMutableArray *list = [[NSMutableArray alloc] initWithContentsOfFile:path];


if (list == nil) {

    list = [[NSMutableArray alloc] init];

}


[list addObject:@"서울"];

[list addObject:@"대전"];

[list addObject:@"대구"];

[list addObject:@"부산"];


[list writeToFile:path atomically:YES];

[list release];


다음과 같은 경로로 이동하면 list.plist 파일이 하나 생성되어 있다.

/Users/[User Name]/Library/Application Support/iPhone Simulator/[Version]/Applications/[Bundle Identifier]/Documents

이것을 Property List Editor로 열어보면 입력한 데이터를 확인할 수 있다.


여기서 중요한 것은 initWithContentsOfFile: 메서드를 통해NSArray 를 초기화 할때 해당 파일이 존재 하지 않는 경우 리턴되는 값은 nil 이라는 것이다. 그러므로 plist 파일을 읽어들여 초기화를 할 경우 반드시 nil 검사를 하여 파일이 존재하지 않을 경우 init 메서드를 통한 초기화가 필요하다.
Posted by NuBiFoRM :


 이번 업데이트에서는 정류장 도착정보를 확인하는 뷰에서 데이터를 자동으로 리프레쉬 하는 기능을 추가하였습니다.

 데이터 리프레쉬가 진행되는 동안 그동안 사용했던 로딩 뷰를 제거하고 변경된 데이터만 테이블 뷰에 반영되도록하여 데이터가 변화할 때 마다 자연스럽게 셀이 업데이트 되도록 구현하였습니다.

 다음 업데이트에서는 북마크 기능을 추가할 예정이며 지도상에서 버스 노선을 보여주는 부분은 문제점을 좀더 해결한 후에 반영할 것입니다.

 그리고 푸시메시지를 이용한 버스도착 알림을 구현하는 부분도 고려하고 있습니다. 그러나 문제점은 푸시 알람을 이용하게 되면 푸시 서버가 별도로 필요하게 되며 이에 대한 운영 비용도 만만치 않은지라 많은 고민을 안고 있으며 한가지 해결책으로 앞으로 배너 광고를 운영을 위한 수입원으로 사용할 방법도 검토중에 있습니다.

'Development Log' 카테고리의 다른 글

Springboot Docker Image  (0) 2020.09.06
Docker MySQL  (0) 2020.09.05
OSX OpenJDK 설치  (0) 2020.09.04
April 16, 2013  (0) 2013.04.16
May 16, 2011  (0) 2011.05.16
Posted by NuBiFoRM :