잊지 않겠습니다.

'Object-C'에 해당되는 글 2건

  1. 2011.11.10 MultiView application
  2. 2011.11.09 Object-C에서 swap 방법

MultiView application

Object-C 2011. 11. 10. 14:29
출처 : http://holla.tistory.com/entry/IPhone-%EB%A9%80%ED%8B%B0%EB%B7%B0
 

Main Sub를 추가 하였다.  MainSub가 MainWindow.xib와 연결하였다. 

#import <UIKit/UIKit.h>

@class MainSub;


@interface JinSubViewAppDelegate : NSObject <UIApplicationDelegate> {

IBOutlet UIWindow *window;

IBOutlet MainSub  *mainsub;

}


@property (nonatomicretain)  UIWindow *window;

@property (nonatomicretain)  MainSub *mainsub;


@end


그리고 

- (void)applicationDidFinishLaunching:(UIApplication *)application {    


    // Override point for customization after application launch

[window addSubview:mainsub.view]; -> 요부분 mainsub를 window에 추가 한다.

       [window makeKeyAndVisible];

}



서로 서로 다 연결하고 addSubview:mainsub.view만 했다면 이제 부턴 어려울껀 없다.

MainSub.h는 이런식으로 또다른 뷰를 추가 한다.

@class BlueSub;

@class RedSub;



@interface MainSub : UIViewController {


BlueSub *bluesub;

RedSub  *redsub;

}

@property (retainnonatomic)BlueSub *bluesub;

@property (retainnonatomic)RedSub *redsub;


-(IBAction)MainSwitch:(id)sender; ->이 부분은 스위치 버튼과 연결 해주면 된다.



MainSub.m



-(IBAction)MainSwitch:(id)sender

{

if(self.redsub == nil)

{

RedSub *redcontrolsub = [[RedSub alloc]

initWithNibName:@"RedView"

bundle:nil];

self.redsub = redcontrolsub;

[redcontrolsub release];

}

[UIView beginAnimations:@"View Flip" context:nil];

[UIView setAnimationDuration:1.25];

[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

if(self.bluesub.view.superview == nil)

{

[UIView setAnimationTransition:

    UIViewAnimationTransitionFlipFromRight

                forView:self.view cache:YES];

[bluesub viewWillAppear:YES];

[redsub viewWillAppear:YES];

[redsub viewWillDisappear:YES];

[redsub.view removeFromSuperview];

[self.view insertSubviewself.bluesub.view atIndex:0];  

[redsub viewDidDisappear:YES];

[bluesub viewDidAppear:YES];

}


여기서 오해할 만한게 있는데 initWithNibName:@"RedView" 이부분이다. 스트링인데 알고 보면 View이름이다. 나머지는 RedView나 BlueView에서 간단하게 버튼 처리를 하면 된다.

Posted by Y2K
,

출처 : http://dmindproject.com/blog/?p=280
 

- 잘못된 방법 ( X )

-(void)swapA:(NSString *)str1 andB:(NSString *)str2
{
    NSString *temp = str1;
    str1 = str2;
    str2 = temp;
}
NSString *str1 = @"11111";
NSString *str2 = @"22222";

NSLog(@"%@, %@", str1, str2);     //11111, 22222
[self swapA:str1 andB:str2];
NSLog(@"%@, %@", str1, str2);     //11111, 22222

-올바른 방법 ( O )

-(void)swapAA:(NSString **)str1 andBB:(NSString **)str2
{
    NSString *temp = *str1;
    *str1 = *str2;
    *str2 = temp;
}
NSString *str1 = @"11111";
NSString *str2 = @"22222";

NSLog(@"%@, %@", str1, str2);     //11111, 22222
[self swapAA:&str1 andBB:&str2];
NSLog(@"%@, %@", str1, str2);     //22222, 11111

올바른 swap함수를 구현하기 위해서는 포인터가 가르키는 value값을 넘기면 안되고
포인터 value의 주소값(&포인터이름)을 넘겨야 한다.
따라서 swap함수의 매개변수는 포인터의 주소값을 저장하는 **(double pointer) 형태가 된다.

Posted by Y2K
,