아이폰어플개발정보2010. 10. 29. 10:29
[아이폰 앱 개발] 아이폰 어플 개발 Table View 의 기초

Table View Basics
iPhone tables(UITableView) 의 행(Row)수는 제한이 없음.(iPhone OS Memory)
UITableView - 테이블의 Data를 표시하는 뷰 오브젝트.
UITableViewCell - 테이블의 단일 행을 표현.

UITableViewCell 에 복수의 데이터를 추가하기 위해서
1.UITableViewCell 에 subview 를 추가 하거나
2.UITableViewCell 을 상속하는 서브클래스 작성.

Table > Section > Rows...
그룹 테이블(Figure 8-3)에서 각 Section 은 한 그룹을 나타냄.
인덱스 테이블(Figure 8-3)에서 각 Section 은 한 인덱스의 집합.

Implementing a Simple Table
Writing the Controller

  1. // delegate, datasource protocol 선언.  
  2. // datasource 는 테이블 각 행에 대한 데이터 핸들.  
  3. // delegate 는 데이터의 설정(font, user interation...) 핸들.  
  4. @interface SomeUITableView  {  
  5.     // Table Data.  
  6.     NSArray *tableData;  
  7.     ...  
  8. }  
  9.   
  10. #pragma mark -  
  11. #pragma mark Table View Data Source Methods  
  12. // 해당 Section 에 행 수.  
  13. - (NSInteger)tableView:(UITableView *)tableView  
  14.  numberOfRowsInSection:(NSInteger)section {  
  15.     return [self.tableData count];  
  16. }  
  17.   
  18. // 행이 그려질 때 호출되어 현재 표시될 행의 UITableViewCell 를 리턴.  
  19. // NSIndexPath 를 이용해서 해당 Section[indexPath section]과  
  20. // 해당 행[indexPath row]을 알 수 있음.  
  21. // UITableViewCell 는 캐쉬화 되고 시스템 메모리가 부족할 때 자동 메모리 해제됨.  
  22. - (UITableViewCell *)tableView:(UITableView *)tableView  
  23.          cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
  24.     // cache 할 때 구분자.  
  25.     static NSString *SomeID = @"SomeID";  
  26.   
  27.     // cache 에 저장된 UITableViewCell 취득.  
  28.     UITableViewCell *cell = [tableView   
  29.                              dequeueReusableCellWithIdentifier:SomeID];  
  30.   
  31.     if (cell == nil) {  
  32.         cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero  
  33.                  reuseIdentifier:SomeID] autorelease];  
  34.     }  
  35.     ...  
  36. }  


Adding an Image
UITableViewCell 의 기본 옵션으로 각 행의 왼쪽에 이미지를 붙일 수 있음.
  1. // tableview:cellForRowAtIndexPath:  
  2. ...  
  3. UIImage *image = [UIImage imageNamed:@"someImage.png"];  
  4. cell.image = image;  
  5. ...  


Addtional Configurations
Setting the Indent Level
  1. #pragma mark -  
  2. #pragma mark Table View Delegate Methods  
  3. // 각 행의 indent level(NSInteger) 설정.  
  4. - (NSInteger)tableView:(UITableView *)tableView  
  5. indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath {  
  6.     ...  
  7.     return indentLevel;  
  8. }  


Handling Row Selection
USER 가 선택한 행의 이벤트 전후로 핸들링이 가능.
  1. - (NSIndexPath *)tableView:(UITableView *)tableView  
  2.   willSelectRowAtIndexPath:(NSIndexPath *)indexPath {  
  3.     // USER 선택에 대한 이벤트 전처리.  
  4.     ....  
  5. }  
  6.   
  7. - (NSIndexPath *)tableView:(UITableView *)tableView  
  8.    didSelectRowAtIndexPath:(NSIndexPath *)indexPath {  
  9.     // USER 선택에 대한 이벤트 후처리.  
  10.     ....  
  11. }  


Changing Font Size and Row Height
  1. // tableview:cellForRowAtIndexPath:  
  2. ...  
  3. cell.font = [UIFont boldSystemFontOfSize:80];  
  4. ...  
  5. // 열의 높이 설정.  
  6. - (CGFloat)tableView:(UITableView *)tableView  
  7. heightForRowAtIndexPath:(NSIndexPath *)indexPath {  
  8.     ....  
  9.     return height;  
  10. }  
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 10. 12. 04:51
Creating a custom Table View Cell programmatically

Ohhk, quite a lot of things done but this one is something which I have used most often. Custom cells can sometimes greatly push ahead the usability of your application. In this post I am going to create a test project which will demonstrate how to create custom cells and use them appropriately to provide better usability. The application will finally look like this:


So to start open xcode and create a new project, chose the template as “Navigation Based” and name it as “CustomCellTestProject”. What template you chose does not matter, refer my previous posts to find how you can start working on any template.
First thing we will do is create a customCell. Right click on Classes and add a new UITableViewCell subclass. Name it as “CustomCell”. Now open CustomCell.h and add the following code:
#import

@interface CustomCell : UITableViewCell {

UILabel *primaryLabel;

UILabel *secondaryLabel;

UIImageView *myImageView;

}

@property(nonatomic,retain)UILabel *primaryLabel;

@property(nonatomic,retain)UILabel *secondaryLabel;

@property(nonatomic,retain)UIImageView *myImageView;

@end


We create the three elements and added them to the contentView of our cell.
synthesize all the three elements in CustomCell.m as we are going to access these elements from other classes.

@synthesize primaryLabel,secondaryLabel,myImageView;


Here we have simply added a primary label to display the primary text, a secondary label and an imageView. These elements will be created and added into the content view of our custom cell. So open CustomCell.m and add the following code

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {

if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) {

// Initialization code

primaryLabel = [[UILabelalloc]init];

primaryLabel.textAlignment = UITextAlignmentLeft;

primaryLabel.font = [UIFontsystemFontOfSize:14];

secondaryLabel = [[UILabelalloc]init];

secondaryLabel.textAlignment = UITextAlignmentLeft;

secondaryLabel.font = [UIFontsystemFontOfSize:8];

myImageView = [[UIImageView alloc]init];

[self.contentView addSubview:primaryLabel];

[self.contentView addSubview:secondaryLabel];

[self.contentView addSubview:myImageView];

}

returnself;

}



Now, we have already added the UI elements into our cell but you must have noticed, we have not yet defined how these elements will appear inside cell. Go ahead and add the following code for that:

- (void)layoutSubviews {

[superlayoutSubviews];

CGRect contentRect = self.contentView.bounds;

CGFloat boundsX = contentRect.origin.x;

CGRect frame;

frame= CGRectMake(boundsX+10 ,05050);

myImageView.frame = frame;

frame= CGRectMake(boundsX+70 ,520025);

primaryLabel.frame = frame;

frame= CGRectMake(boundsX+70 ,3010015);

secondaryLabel.frame = frame;

}


You can do anything in this method to define the lay out of cell. I have simply assigned frames to all the elements.
You can also find a method in CustomCell.m

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {

[super setSelected:selected animated:animated];

// Configure the view for the selected state

}

This method can be used to define how your cell should react when it is selected. You can describe what should be the highlight color or may be you want to flash one of the labels anything of your choice. I am leaving this method as it is.
We are done with creating our custom cell and now we have to use it. Open RootViewController.m and import CustomCell.h at the top.


#import “CustomCell.h”

I am going to create 5 cells here, you can just use your own logic of specifying number of cells and data. So change the following method to look like this:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

return 5;

}

Now we are going to use our custom cell. If you look at the cellForRow method, you will find that a UItableViewCell has been created and re used. Now all we have to do is to replace this cell with our new cell. Change the code inside this method to look like this:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @”Cell”;

CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

cell = [[[CustomCellallocinitWithFrame:CGRectZeroreuseIdentifier:CellIdentifier] autorelease];

}

// Set up the cell…

switch (indexPath.row) {

case 0:

cell.primaryLabel.text = @"Meeting on iPhone Development";

cell.secondaryLabel.text = @"Sat 10:30";

cell.myImageView.image = [UIImage imageNamed:@"meeting_color.png"];

break;

case 1:

cell.primaryLabel.text = @"Call With Client";

cell.secondaryLabel.text = @"Planned";

cell.myImageView.image = [UIImage imageNamed:@"call_color.png"];

break;

case 2:

cell.primaryLabel.text = @"Appointment with Joey";

cell.secondaryLabel.text = @"2 Hours";

cell.myImageView.image = [UIImage imageNamed:@"calendar_color.png"];

break;

case 3:

cell.primaryLabel.text = @"Call With Client";

cell.secondaryLabel.text = @"Planned";

cell.myImageView.image = [UIImage imageNamed:@"call_color.png"];

break;

case 4:

cell.primaryLabel.text = @"Appointment with Joey";

cell.secondaryLabel.text = @"2 Hours";

cell.myImageView.image = [UIImage imageNamed:@"calendar_color.png"];

break;

default:

break;

}

return cell;

}


I have added some dummy data. You can use your data source to provide data for primaryLabel and secondaryLabel. Please note that I have used three images here. You can use any image of your choice. All you need to to do is copy the images and paste it into your project root folder (which in this case is CustomCellTestProject folder). After pasting the files, in xcode right click on Resources (or any group), select Add >> ExistingFiles and then select all the images you want to add in you project. Once added you can simply use them by their names.
Thats it, go ahead and run the project. You will find something wrong when you compare you simulator screen with mine. If you noticed in the CustomCell.m, I have given some frames to the UI elements. You need to make sure that the height of your cell large enough to accomodate all the elements. So add this following code and you fixed the issue:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

return50;

}


this is not my post the original post is here


http://blog.webscale.co.in/?p=284

Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 9. 17. 00:01
[아이폰 어플리케이션 개발] view 전환하는 방법
1. 전체개관

Window-Based Application 을 생성하면 델리게이트 한개와 기본 윈도우 한개가 자동생성된다.
화면을 한개만 사용할때는 기본 윈도우를 사용하지만 이 프로그램에서는 아무런 기능을 하지 않는다.

어플리케이션 전체를 위한 뷰컨트롤러를 한개를 만들게 되는데 이 컨트롤러가 모든 화면전환 작업을 책임진다.
이 프로그램에서는 뷰컨트롤러를 위한 뷰를 생성하고 화면전환 버튼을 넣는다.
화면이 전환되더라도 가장 높은 레이어에 이 뷰가 지정되기 때문에 버튼은 계속 보이게 된다.

각각의 전환될 화면을 만들게 되는데 각각의 화면마다 뷰와 뷰컨트롤러를 생성한다.



2. Xcode 를 실행한다.



3. 새프로젝트를 생성한다.

- 상단바 > File > New Project

- Window-Based Application 을 선택한다.

- 프로젝트명을 ChangeTest 로 입력한다.

- Use Core Data for storage 게 체크되어 있으면 해제한다.



4. 어플리케이션 전체를 위한 뷰컨트롤러를 생성한다.

- "Groups & Files" 목록에서 ChangeTest > Classes 로 이동한다.

- 상단바 > File > New File 을 클릭한다.

- Cocoa Touch Class 메뉴를 선택하고 UIViewController subclass 를 선택한 후

  옵션은 전부해제하고 Next 를 클릭한다.

- ChangeTestViewController.m 을 생성한다.



5. 각각의 화면을 위한 뷰컨트롤러를 생성한다.

- FirstViewController.m 과 SecondViewController.m 을 생성한다.

- 3번과 동일한 방식으로 생성한다.



6. 각각의 화면을 생성한다.

- "Groups & Files" 목록에서 ChangeTest > Resources 로 이동한다.

- 상단바 > File > New File 을 클릭한다.

- User interface 메뉴를 선택하고 View XIB 를 선택한 후 Next 를 클릭한다.

- FirstViewController.xib 를 생성한다.

- 동일한 방식으로 SecondViewController.xib 를 생성한다.



7. 델리게이트와 첫번째 생성한 뷰컨트롤러를 연결한다.

- ChangeTestAppDelegate.h 를 수정한다.

===============================================================================
#import

@class ChangeTestViewController;

@interface ChangeTestAppDelegate : NSObject {
    UIWindow *window;
    ChangeTestViewController *ctr;
}

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

@end
===============================================================================

- ChangeTestAppDelegate.m 을 수정한다.

===============================================================================
#import "ChangeTestAppDelegate.h"
#import "ChangeTestViewController.h"

@implementation ChangeTestAppDelegate

@synthesize window;
@synthesize ctr;

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    // Override point for customization after application launch
    [window addSubview:ctr.view];
    [window makeKeyAndVisible];
}

- (void)dealloc {
    [window release];
    [ctr release];
    [super dealloc];
}

@end
===============================================================================



8. 첫번째 생성한 뷰컨트롤러와 뷰컨트롤러를 연결한다.

- ChangeTestViewController.h 를 수정한다.

===============================================================================
#import

@class FirstViewController;
@class SecondViewController;

@interface ChangeTestViewController : UIViewController {
    FirstViewController *first;
    SecondViewController *second;
}

@property (nonatomic, retain) IBOutlet FirstViewController *first;
@property (nonatomic, retain) IBOutlet SecondViewController *second;

- (IBAction)goPrev:(id)sender;
- (IBAction)goNext:(id)sender;

@end
===============================================================================

- ChangeTestViewController.m 을 수정한다.

===============================================================================
#import "ChangeTestViewController.h"
#import "FirstViewController.h"
#import "SecondViewController.h"

@implementation ChangeTestViewController

@synthesize first;
@synthesize second;

- (void)viewDidLoad
{
    FirstViewController *f = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
    self.first = f;
    [self.view insertSubview:f.view atIndex:0];
    [f release];
}

- (IBAction)goPrev:(id)sender
{
    if (self.first == nil)
    {
        FirstViewController *f = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
        self.first = f;
        [f release];
    }

    if (self.second.view.superview != nil)
    {
        [second.view removeFromSuperview];
        [self.view insertSubview:first.view atIndex:0];
    }
}

- (IBAction)goNext:(id)sender
{
    if (self.second == nil)
    {
        SecondViewController *s = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
        self.second = s;
        [s release];
    }

    if (self.first.view.superview != nil)
    {
        [first.view removeFromSuperview];
        [self.view insertSubview:second.view atIndex:0];
    }
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];

    if (self.first.view.superview == nil)
    {
        self.first = nil;
    }
    else
    {
        self.second = nil;
    }
}

- (void)dealloc {
    [first release];
    [second release];
    [super dealloc];
}

@end
===============================================================================



9. 첫번째 생성한 뷰컨트롤러를 의한 뷰를 생성한다.

- MainWindow.xib 를 더블클릭한다.

- Library 창을 열고 Library > Cocoa Touch > Controllers 에서 View Controller 를 선택해서

  MainWindow.xib 에 넣는다.

- 새로 View Controller 창이 뜨면 그창을 선택하고 Identity Inspector 를 열고 Class 에 ChangeTestViewController 를 선택한다.

- Library 창을 열고 Library > Cocoa Touch > Windows, Views & Bars 에서 View 를 선택해서 새로 View Controller 창에 View 를 넣고

  hidden 속성을 준다.

- 버튼을 두개 생성하고 이전 다음으로 제목을 변경한다.

- 버튼을 선택하고 Connection Inspector 를 열고 Touch up inside 와 ChangeTestViewController 에서 각 함수를 연결한다.

- MainWindow.xib 창의 아이콘중 델리게이트 아이콘을 클릭후 Connection Inspector 를 열어 ctr 과 ChangeTestViewController 를 연결한다.



10. 뷰컨트롤러를 수정한다.

- FirstViewController.h 를 수정한다.

===============================================================================
#import

@interface FirstViewController : UIViewController {

}

@end
===============================================================================

- SecondViewController.h 를 수정한다.

===============================================================================
#import

@interface SecondViewController : UIViewController {

}

@end
===============================================================================

- FirstViewController.m 을 수정한다.

===============================================================================
#import "FirstViewController.h"

@implementation FirstViewController

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
}


- (void)dealloc {
    [super dealloc];
}

@end
===============================================================================

- SecondViewController.m 을 수정한다.

===============================================================================
#import "SecondViewController.h"

@implementation SecondViewController

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
}


- (void)dealloc {
    [super dealloc];
}

@end
===============================================================================


11. 뷰를 수정한다.

- FirstViewController.xib 를 더블클릭한 후 File's owner 를 선택한다.

- 상단바 > Tools > Identity Inspector 를 연다.

- Class 에 FirstViewController 를 선택한다.

- View 창 바닥색을 바꾼다.(화면이 바뀌는지 확인을 위해)

- 뷰를 연결한다.(클래스를 바꾸면 View 연결이 해제되므로 다시 연결해주어야 한다.)

- 같은 방법으로 SecondViewController.xib 를 수정한다.



12. 실행한다.

메뉴중 "Build & Go" 를 클릭한다.


출처 : http://blog.naver.com/PostList.nhn?blogId=heajin722¤tPage=23
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 9. 17. 00:00
view 위에 view를 올리는 방법

뷰 위에 뷰 올리기^^

두가지 방법이 있습니다. controller를 사용하는 방법.

CGRect를 사용하는 방법.

그러나 저는 controller를 사용하는것이 올바른 방법 같아요^^

>> controller사용하는 방법

// InforView는 UIView를 상속받았습니다.

InforView *infor_view = [[InforView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGTH)];
  UIViewController *infor_controller = [[UIViewController alloc] init];
  infor_view.backgroundColor = [UIColor blueColor];
  infor_controller.view = infor_view;
  [self addSubview:infor_controller.view];
  [infor_controller release];

>> Controller없이~

 CGRect appRect = [[UIScreen mainScreen] applicationFrame];
 UIView *subView = [[UIView alloc] initWithFrame:appRect];
 subView.backgroundColor = [UIColor blueColor];
 self.view = subView;
 [subView release];



출처 : http://blog.naver.com/PostList.nhn?blogId=heajin722¤tPage=22
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 9. 11. 01:32
아이폰 어플 개발 Table View 의 기초

Table View Basics
iPhone tables(UITableView) 의 행(Row)수는 제한이 없음.(iPhone OS Memory)
UITableView - 테이블의 Data를 표시하는 뷰 오브젝트.
UITableViewCell - 테이블의 단일 행을 표현.

UITableViewCell 에 복수의 데이터를 추가하기 위해서
1.UITableViewCell 에 subview 를 추가 하거나
2.UITableViewCell 을 상속하는 서브클래스 작성.

Table > Section > Rows...
그룹 테이블(Figure 8-3)에서 각 Section 은 한 그룹을 나타냄.
인덱스 테이블(Figure 8-3)에서 각 Section 은 한 인덱스의 집합.

Implementing a Simple Table
Writing the Controller

  1. // delegate, datasource protocol 선언.
  2. // datasource 는 테이블 각 행에 대한 데이터 핸들.
  3. // delegate 는 데이터의 설정(font, user interation...) 핸들.
  4. @interface SomeUITableView  {  
  5.     // Table Data.
  6.     NSArray *tableData;  
  7.     ...  
  8. }  
  9. #pragma mark -
  10. #pragma mark Table View Data Source Methods
  11. // 해당 Section 에 행 수.
  12. - (NSInteger)tableView:(UITableView *)tableView  
  13.  numberOfRowsInSection:(NSInteger)section {  
  14.     return [self.tableData count];  
  15. }  
  16. // 행이 그려질 때 호출되어 현재 표시될 행의 UITableViewCell 를 리턴.
  17. // NSIndexPath 를 이용해서 해당 Section[indexPath section]과
  18. // 해당 행[indexPath row]을 알 수 있음.
  19. // UITableViewCell 는 캐쉬화 되고 시스템 메모리가 부족할 때 자동 메모리 해제됨.
  20. - (UITableViewCell *)tableView:(UITableView *)tableView  
  21.          cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
  22.     // cache 할 때 구분자.
  23.     static NSString *SomeID = @"SomeID";  
  24.     // cache 에 저장된 UITableViewCell 취득.
  25.     UITableViewCell *cell = [tableView   
  26.                              dequeueReusableCellWithIdentifier:SomeID];  
  27.     if (cell == nil) {  
  28.         cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero  
  29.                  reuseIdentifier:SomeID] autorelease];  
  30.     }  
  31.     ...  
  32. }  


Adding an Image
UITableViewCell 의 기본 옵션으로 각 행의 왼쪽에 이미지를 붙일 수 있음.
  1. // tableview:cellForRowAtIndexPath:
  2. ...  
  3. UIImage *image = [UIImage imageNamed:@"someImage.png"];  
  4. cell.image = image;  
  5. ...  


Addtional Configurations
Setting the Indent Level
  1. #pragma mark -
  2. #pragma mark Table View Delegate Methods
  3. // 각 행의 indent level(NSInteger) 설정.
  4. - (NSInteger)tableView:(UITableView *)tableView  
  5. indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath {  
  6.     ...  
  7.     return indentLevel;  
  8. }  


Handling Row Selection
USER 가 선택한 행의 이벤트 전후로 핸들링이 가능.
  1. - (NSIndexPath *)tableView:(UITableView *)tableView  
  2.   willSelectRowAtIndexPath:(NSIndexPath *)indexPath {  
  3.     // USER 선택에 대한 이벤트 전처리.
  4.     ....  
  5. }  
  6. - (NSIndexPath *)tableView:(UITableView *)tableView  
  7.    didSelectRowAtIndexPath:(NSIndexPath *)indexPath {  
  8.     // USER 선택에 대한 이벤트 후처리.
  9.     ....  
  10. }  


Changing Font Size and Row Height
  1. // tableview:cellForRowAtIndexPath:
  2. ...  
  3. cell.font = [UIFont boldSystemFontOfSize:80];  
  4. ...  
  5. // 열의 높이 설정.
  6. - (CGFloat)tableView:(UITableView *)tableView  
  7. heightForRowAtIndexPath:(NSIndexPath *)indexPath {  
  8.     ....  
  9.     return height;  
  10. }  



출처 : http://blog.naver.com/PostList.nhn?blogId=hana_815¤tPage=91
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 6. 24. 14:21
iPhone View Switching 을 위한 모달뷰(ModalView) 사용법
A 라는 뷰콘트롤러에서 B 라는 뷰콘트롤러의 뷰를 모달로 띄우고 싶을 때

방법1.
A 에서의 코드
- (IBAction)showModalview {
    ModalVWController *modalView = [[ModalVWController alloc] initWithNibName:nil bundle:nil];
    [self presentModalViewController:modalView animated:YES];

우후.. 쉽다.
닫을때는? 그건 B 에서 처리해줘야 한다. 이렇게
-(IBAction)closeView {
    [[self parentViewController] dismissModalViewControllerAnimated:YES];

음.. view 의 메서드를 이용하는 두번째 방법을 소개하면
방법2.
A에서의 코드
[[self view] addSubview:modalView.view];
그리고 닫을 때의 코드는
[[self view] removeFromSuperview];
이다.



출처 : http://blog.naver.com/PostView.nhn?blogId=suny4rang&logNo=50083064864
Posted by 오늘마감

댓글을 달아 주세요