2011-10-18 3 views
0

일부 NSUserDefaults를 업데이트하는 데 사용되는보기가 있습니다. 이러한 기본값은 다른보기의 표에 영향을 미칩니다. 내가 직면 한 문제는 뷰가 다시 표시되기 전에 테이블의 데이터를 다시로드하려고한다는 것입니다. 현재부모보기에서 메서드를 호출하려면 어떻게해야합니까? (iPhone/Objective-C)

나는 테이블이 포함 viewA이, 나는 다음 코드를 사용하여 viewB를 표시 : 사용자가 viewB이 기각 된 NSUserDefaults를 업데이트했습니다

[self presentModalViewController:viewB animated:YES]; 

되면 따라서 다시 viewA을 표시. viewA이 표시되기 전에 데이터를 새로 고침 할 수 있기를 원합니다. 이 일을하는 방법이 있습니까?

+0

[Delegates] (http://developer.apple.com).co.kr/library/ios/# documentation/코코아/개념/코코아 Fundamentals/CommunicatingWithObjects/CommunicateWithObjects.html) – Joe

답변

1

viewA 님의보기에서 코드를 새로 고칩니다.

-(void)viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:animated]; 
    // your refresh code 
} 
0

delegation를 통해 :

ViewAController가 ViewBController이

@protocol ViewBControllerProtocol 
/* 
use full signatures here 
*/ 
@end 


@interface ViewBController{ 
} 
@property (nonatomic, assign) id<ViewBControllerProtocol> delegate; 
@end; 


@interface ViewAController <ViewBControllerProtocol>{ 
} 
@end; 

@implemantation ViewAController 

// implement the method defined in the protocol 
@end 

은 다음

viewB.delegate = viewA 

당신은 sample code at github을 찾을 할 제공하는하는 protocol을 구현해야합니다, CheckTableController이 될 경우 ViewBControllerShowFavoritesTableControllerViewAController .

0

presentingViewController/parentViewController (해당 문서 확인)을 사용할 수 있습니다. 하지만 더 나은 해결책은 "부모"를 모달 컨트롤러의 대리자로 만들고 부모에게 대리인이 준수하는 프로토콜을 구현하도록하는 것입니다.

더 좋은 해결책은 모달 컨트롤러에 반환 코드를 블록으로 표시하는 것입니다.하지만 Apple이 아직 알려주지 않았으므로 독자적인 솔루션을 사용해야합니다.

0

나는 viewAcontroller이 viewBcontroller에 대한 대리자 인 경우, viewA의 방법에 modalViewController 또는 viewB을 기각 추측. 이 동일한 방법에서는 필요한 테이블 재로드 데이터 만 구현하면됩니다.이 작업은 viewA를 다시 표시하기 전에 수행됩니다. viewBcontroller.m에서

@protocol ViewBControllerDelegate <NSObject> 
    -(IBAction)closeViewBController; 

    @end 

: viewAcontroller.h에서

-(IBAction)closeView{ 


    [[self parentViewController] performSelector:@selector(closeViewBController)]; 

    } 

:

인터페이스 전에 viewBcontroller.h에서

:

나는 코드의 종류가

@interface viewAcontroller : UIViewController <ViewBControllerDelegate> 
    {//....implementation here 

및 i n ViewAController.m :

-(IBAction)closeViewBController{ 
    [self dismissModalViewControllerAnimated:YES]; 
    //code needed if NSUserDefault is modified 
    } 

매우 쓰기 쉽습니다. 희망이 귀하의 질문에 대한 답변을 것입니다

관련 문제