如何在不使用segues的情况下更改当前显示uiview?

时间:2012-10-18 10:08:12

标签: objective-c xcode4 uiviewcontroller storyboard loadview

enter image description here我想将显示更改为UIViewController,它在故事板上具有来自UIViewController类的视图控制器,该类在故事板上没有视图控制器。故事板上没有这个... ...

2 个答案:

答案 0 :(得分:0)

就像这样:

在AppDelegate.m中进行快速设置:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    ViewController *sourceViewController = [[ViewController alloc] init];
    UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController:sourceViewController];
    [self.window setRootViewController:nav];
    return YES;
}

在上面的示例中,将ViewController类替换为您自己的sourceViewCntroller

- (IBAction) didPressMyButton {
    NewViewController* newVC = [[[NewViewController alloc] init] autorelease];
    [self.navigationController pushViewController:newVC animated:YES];
}

将此操作连接到故事板上的按钮或以任何方法嵌入视图更改。您需要先设置UINavigation控制器。

答案 1 :(得分:0)

我不完全确定我理解你要做的是什么,但是我想你正在问一个如何从一个故事板加载一个视图控制器,而不使用segue,来自一个视图控制器中的方法。从故事板加载。

首先,在故事板中,选择要加载的视图控制器,然后打开Identity Inspector。设置视图控制器的Storyboard ID。您似乎要加载MapViewController,因此我们假设您将故事板ID设置为map

在您的代码中,您可以像这样加载视图控制器:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
MapViewController *mapViewController = [storyboard instantiateViewControllerWithIdentifier:@"map"];

一旦您有对视图控制器的引用,您就可以设置其属性或向其发送消息。然后,您可以以任何您想要的方式显示它 - 可以通过将其推送到导航控制器,或通过呈现它,或者将其设置为窗口的根视图控制器。