在尝试弹出Web视图然后允许用户返回时,我做错了什么

时间:2011-02-26 01:26:42

标签: objective-c cocoa ios4


我的应用程序有tabBarController有3个视图,其中一个我想弹出一个Web浏览器,能够返回到应用程序。为此,我使用的是UINavigationController 在myAppDelegate.h中我定义了属性UINavigationController * nav,在myAppDelegate.m中我有@synthesize nav。
在按下按钮时webPopup函数所在的类中,我的代码来到此函数。

- (IBAction)showWeb:(id)sender {
myAppDelegate *app=[[UINavigationController alloc] initWIthRootViewController:self];
// because I want to return back to the same view
webController *web = [[webController alloc] initWithStyle:UITableViewStypeGrouped];
[app.nav pushViewController:web animated:YES];
app.nav.view.frame = CGRect(,0,320,430);
[self.view.window addSUbview:app.nav.view];
}

Web弹出窗口会发生但是它会垂直移动,当我按下“后退按钮”时,我的前一个视图也会出现,并且它也会从之前垂直移动。 经过几次来回后,事情就这样了。

问题:
 1.什么可以导致转变?
 2.当我“回”看标题时如何避免(从“后退”按钮测试,我认为这可能会导致我回去时的转变。
 3.如何找出为什么它在几次尝试后挂起?

感谢。 维克多

2 个答案:

答案 0 :(得分:0)

该行:

myAppDelegate *app=[[UINavigationController alloc] initWIthRootViewController:self];

对我没用。你的编译器肯定会警告你这件事吗?什么是“myAppDelegate”定义为?顺便说一下,课程前面应该有一个大写字母。

此外,该行

[self.view.window addSUbview:app.nav.view];

非常可疑,因为您的应用程序的UIWindow应该只有一个子UIView。你不应该只是毫不犹豫地添加更多的观点,并希望事情有效。通过删除旧的UIView并添加一个新的,可以更改子UIView,但您似乎并没有这样做。拥有UIWindow的UIView不止一个孩子会让你很快陷入困境 - 例如,设备方向的改变可能会中断。

答案 1 :(得分:0)

我不清楚为什么应该委托代表(或者那个问题的窗口)需要完全搞砸你做你想做的事情。听起来你应该使用标准的Nav View Controllers和Web Views。

此外,您无需任何内存管理即可初始化。