【发布时间】:2013-03-15 04:29:12
【问题描述】:
该程序基本上只是应该在两个视图之间切换。我正在尝试学习如何制作多视图应用。
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
FirstViewController *aView = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil];
self.firstView = aView;
[window addSubview:firstView.view];
self.window.rootViewController = aView;
return YES;
}
我收到一条错误消息,提示“应用程序在应用程序启动结束时应该有一个根视图控制器”。我添加了行“self.window.rootViewController = aView;”那个错误就消失了。现在,我的应用程序将从视图 1 切换到视图 2(它总是能够做到这一点)但是当尝试切换回来时它会崩溃。我得到的唯一输出是“(11db)”。它会将我带到一个带有一堆内存地址的屏幕,并以绿色突出显示以下内容:
0x10dc09b: movl 8(%edx), %edi
它说“线程 1:EXC_BAD_ACCESS(代码=2,地址)”
我不知道如何解释这个输出。我按照 youtube 上的一系列视频指南来创建这个程序。我做了两次以确保我做的一切都是正确的(我做到了)。如果您喜欢我所做的一切,这些指南称为“xcode 教程#3 第 1/3 部分:多视图应用程序”。
我非常困惑。似乎没有其他人有问题。
【问题讨论】:
-
如何在视图之间切换? FirstViewController 是否替换了在情节提要中创建的控制器? (顺便说一句,您不需要该行:[window addSubview:firstView.view])。
-
您不向
UIWindow添加子视图,设置rootViewController会为您做到这一点。我建议将您的子视图添加到您的FirstViewController的view。 -
@rdelmar 我提前道歉。我不知道如何格式化我的回复。我有两个视图,每个视图都有一个按钮。这些按钮连接到名为“swapViews”的方法,每个方法都包含以下代码:
-(IBAction)swapViews:(id)sender{ TestViewsAppDelegate *delegate = (TestViewsAppDelegate *)[[UIApplication sharedApplication] delegate]; FirstViewController *firstView = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; [delegate switchViews:self.view toView:firstView.view]; } -
那么 switchViews 方法中的内容是什么?
-
我为这种格式道歉...我不知道如何使它看起来像实际代码 =/
-(IBAction)swapViews:(id)sender{ TestViewsAppDelegate *delegate = (TestViewsAppDelegate *)[[UIApplication sharedApplication] delegate]; FirstViewController *firstView = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; [delegate switchViews:self.view toView:firstView.view]; }
标签: ios objective-c xcode