2014-12-15 5 views
0

저는 Xcode를 처음 접했고 새로운보기를 열 때 약간의 어려움에 처했습니다.참조로 전달하지 않고 새 ViewController 열기

저는 현재이 방법으로 새로운보기를 엽니 다. 유틸리티 NSObject의 클래스에 저장됩니다

+ (void)OpenSettings:(UIViewController *)VC{ 
    Settings *settings = [[Settings alloc] initWithNibName:@"Settings" bundle:nil]; 
    second.userID=[[[NSUserDefaults standardUserDefaults] objectForKey:@"UserID"] integerValue]; 
    [VC.self presentViewController:settingsInst animated:NO completion:nil]; 
} 

내가 현재 뷰 컨트롤러를 전달하지 않고보기를 열 수 있습니다 어쨌든 있나요? 그것은 큰 관심사 아니지만 날 수에가 보면 조금 열어 원하는 클래스 내 설정보기에서 다음을 호출해야하는 경우 어수선한 :

[Utilities OpenSettings:self]; 
+0

UIViewController 클래스에서 새 메서드를 사용하여 범주를 "global "클래스의 클래스 기능을 사용하면'VC.self' 대신'self'에'presentViewController'를 호출 할 수 있습니다. 모든 것이 맥락에 달려 있습니다. –

답변

0

(1) 당신은 당신이 새로운 것을 말했다 때문에 Xcode : 스토리 보드에 대해 알고 있습니까? 아직 보지 않았다면 한번 살펴 보시기 바랍니다 : https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/SecondTutorial.html 내가 이해하는 한, 당신은 스토리 보드에서 섹 거스로 만들 수있는 "푸시 설정보기"기능을 캡슐화하려고합니다.

(2) 당신이, 당신의 UIViewController를 상속 자신의 슈퍼 쓸 수있는 어떤 이유에서 스토리 보드를 사용하지 않으려는 경우 :

MyViewController.h

@interface MyViewController : UIViewController 

@end 

MyViewController.m을

@implementation MyViewController 

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

-(void) openSettings 
{ 
    Settings *settings = [[Settings alloc] initWithNibName:@"Settings" bundle:nil]; 
    settings.userID=[[[NSUserDefaults standardUserDefaults] objectForKey:@"UserID"] integerValue]; 
    [self presentViewController:settings animated:NO completion:nil]; 
} 
@end 

당신의 ViewController MyViewController에서 지금있는 UITableViewController이있는 UIViewController의 subcalls 아니라는 것을 명심

[self openSettings] 

를 사용할 수 있습니다. 여기에도 같은 기능을 원한다면 사용자 정의 MyTableViewController를 만들어야합니다.

0

정확한 솔루션은보기 컨트롤러 계층 구조에 따라 다릅니다. 나는 당신이 (아마 AppDelegate에서 생성되는) window 활성에 UINavigationController이 있으리라 믿고있어 :

[self.navigationController.topViewController presentViewController:settings animated:NO completion:nil]; 

그것을 할 것입니다. 기본보기 구조를 게시 할 수 있다면 더 많이 도울 수 있습니다 (UITabBarController 또는 UINavigationController 또는보기 만 사용 하시겠습니까?)

관련 문제