0

我的应用程序中有一个警报,当用户单击其确定按钮时,会打开一个新的:但这几个保持为空...没有显示按钮等(以某种方式正确显示了背景)。

此警报在 AppDelegate.m 文件中首次启动应用程序时打开:

-(void) alertView:(UIAlertView *) alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex == 0) {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        FirstVC *launchViewController = [[FirstVC alloc] init];
        self.window.rootViewController = launchViewController;
        [self.window makeKeyAndVisible];

    }
}

也许使用 UIWindow 是错误的。感谢您的所有回答。(FirstVC 是点击警报按钮后显示的 viewController)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
    if (! [defaults boolForKey:@"notFL"]) {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle: @"Welcome"
                                                       message: @"..."
                                                      delegate: self
                                             cancelButtonTitle:nil
                                             otherButtonTitles:@"OK",nil];


        [alert show];


        [defaults setBool:YES forKey:@"notFL"];


    }
}
4

1 回答 1

0

您需要描述情节提要中有哪些控制器。应用程序首次打开时显示的警报是什么控制器?你的问题是你只是分配了一个FirstVC,而不是你在情节提要中设置的那个。要获得该实例,您需要执行以下操作:

FirstVC *launchViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"FirstVC"];

如果您从显示警报的初始视图控制器中调用它,这将起作用。我认为最好将您发布的 coed 放在第一个控制器的 viewDidAppear 方法中。

如果您想在应用程序委托中执行此操作,则需要以不同的方式获取对故事板的引用:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
FirstVC *launchViewController = [storyboard instantiateViewControllerWithIdentifier:@"FirstVC"];
于 2013-05-23T17:35:29.273 回答