2011-09-23 77 views
0

我正在开发一个应用程序,需要在启动时从网站获取JPEG。模态视图不会重新显示?

显示启动画面,然后应用程序尝试从文件中获取Web地址。如果文件丢失,我打开一个模式视图(如UIModalPresentationFormSheet),该模式视图具有供用户输入地址的文本视图 - 然后将地址保存到文件中。

用户点击OK按钮,并尝试获取JPEG。如果地址错误或者JPEG不在Web服务器上,则模式对话框必须重新打开,以便用户可以将Web地址更改为正确的地址。

初始屏幕视图控制器包含下列方法:

- (void)openAddressDialog 
{ 
    serverView *viewController = [[serverView alloc]init]; 
    [viewController setServerAddress:[businessLogic serverAddress]]; 
    [viewController setDelegate:self]; 
    [viewController setModalPresentationStyle:UIModalPresentationFormSheet]; 
    [self presentModalViewController:viewController animated:YES]; 
} 

有趣的是,当我打电话从viewDidLoad方法模态视图没有出现openAddressDialog方法。我不得不将它移动到viewDidAppear方法。因此,大概这种观点必须处于特定的状态,然后才能开启模态观点。

- (void)closeDialog:(UIViewController *)dialogController:(Boolean)actionRequired 
{ 
    // If action required, get the server address from the dialog 
    if (actionRequired) 
    { 
     serverView *viewController = (serverView *)dialogController; 
     NSString *address = [[viewController serverAddress]copy]; 
     [businessLogic setServerAddress:address]; 
     [self dismissModalViewControllerAnimated:YES]; 

     if (![logoImage image]) 
     { 
      [logoImage setImage:[businessLogic eventLogo]]; 

      if (![logoImage image]) 
      { 
       [self openAddressDialog]; 
      }    
     } 

    } 
    else 
    { 
     exit(0); 
    } 
} 

这是当用户点击确定或取消时从模式视图回调的委托方法。 actionRequired参数表示确定已被点击。如果是这样,新的服务器地址从模态视图中获取,并且模态视图被解除。尝试从新地址(在业务规则类中)获取JPEG,如果仍然找不到文件,则再次调用上面显示的第一个方法(openAddressDialog),以便用户可以再次更正地址。

第一次模态视图显示正常,但如果用户输入了错误的地址,则不会再出现。这是否与我尝试在解散之后如此迅速地表达模态观点有关?

我对iPad的开发很陌生,所以很感激任何建议。

的另一件事,这表明我的C的缺乏经验++也许是......如果我宣布在M文件中的私有方法,我们称之为

- (void) methodB 

和方法调用另一个私有方法,让我们称之为

- (void) methodA 

methodA必须在m文件中比methodB更早定义。如果我也想让methodA调用methodB,我就会陷入僵局。我知道的唯一方法就是在h文件中声明methodB,这会使其公开。我如何编写这个场景以便外部世界既不能看到这两种方法?

回答

0

如果使用创建笔尖SERVERVIEW然后做这样的

serverView *viewController = [[serverView alloc]initWithNibName:@"serverView" bundle:nil]; 
+0

是,我使用初始化,因为NIB文件具有相同的名称作为它的控制器,而在其他地方优秀作品在我的应用程序,而苹果文档说这很好。 –

+0

cheers.u可以检查我的答案是正确的,如果我没有回答你。 –