我正在开发一款需要在启动时从网站上获取JPEG的应用。
显示启动画面,然后应用程序尝试从文件中获取Web地址。如果文件丢失,我打开一个模态视图(如UIModalPresentationFormSheet),该视图具有文本视图供用户输入地址 - 然后将地址保存到文件中。
用户点击“确定”按钮,尝试获取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);
}
}
当用户触摸OK或Cancel时,这是从模态视图回调的委托方法。 actionRequired参数表示已点击OK。如果是这样,则从模态视图中拾取新的服务器地址,并取消模态视图。尝试从新地址(在业务规则类中)获取JPEG,如果仍然找不到文件,则再次调用上面显示的第一个方法(openAddressDialog),以便用户可以再次更正地址。 / p>
模态视图第一次显示正常,但如果用户输入了错误的地址,则不会重新出现。这是否与我有关,试图在解雇之后如此快速地表示模态视图?
我对iPad开发很陌生,所以对任何建议都很感激。
另一件事,它表明我对C ++的经验不足,是......如果我在m文件中声明一个私有方法,那就叫它吧
- (void) methodB
并且该方法调用另一个私有方法,让我们称之为
- (void) methodA
方法A必须在m文件中比methodB更早定义。如果我也想让methodA调用methodB,我就会陷入僵局。我所知道的唯一方法是在h文件中声明methodB - 这使得它公开。我如何编码这种情况,以便外界无法看到这两种方法?
答案 0 :(得分:0)
如果用于为serverView创建nib,那么就这样做
serverView *viewController = [[serverView alloc]initWithNibName:@"serverView" bundle:nil];