Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 窗口显示,但无法与模拟器交互_Iphone_Ios_Xcode_Ios5_Xcode4.2 - Fatal编程技术网

Iphone 窗口显示,但无法与模拟器交互

Iphone 窗口显示,但无法与模拟器交互,iphone,ios,xcode,ios5,xcode4.2,Iphone,Ios,Xcode,Ios5,Xcode4.2,我正在阅读O'Rielly编写的iOS4编程,我使用的XCode版本比书中使用的稍新。然而,这一微小的变化导致了一点混乱,因为我无法使用XCode 4.2创建基于窗口的应用程序 无论如何,我启动了一个空项目,它为我提供了一个没有MainWindow.xib的iPhone应用程序的基本结构。我已经得到了这个项目的代表。我开始创建自己的MainWindow.xib。我发现我必须将“Main nib file base name”设置为“Main window”,这样我的nib才能显示出来,所以我做到

我正在阅读O'Rielly编写的iOS4编程,我使用的XCode版本比书中使用的稍新。然而,这一微小的变化导致了一点混乱,因为我无法使用XCode 4.2创建基于窗口的应用程序

无论如何,我启动了一个空项目,它为我提供了一个没有MainWindow.xib的iPhone应用程序的基本结构。我已经得到了这个项目的代表。我开始创建自己的MainWindow.xib。我发现我必须将“Main nib file base name”设置为“Main window”,这样我的nib才能显示出来,所以我做到了

在MainWindow.xib中,我在窗口对象下添加了一个按钮,以确保在运行项目时得到所需的内容。这是我的笔尖现在的状态

没有对AppDelegate.h和AppDelegate.m进行任何更改,我构建并运行了我的项目。我能看到按钮!然而,我无法点击按钮,当我按下home按钮并恢复我的空应用程序时,我再也看不到按钮了!以下是一些我没有对其进行任何更改的文件:

main.m

#import <UIKit/UIKit.h>

#import "EmptyWindowAppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([EmptyWindowAppDelegate class]));
    }
}
#import "EmptyWindowAppDelegate.h"

@implementation EmptyWindowAppDelegate

@synthesize window = _window;
@synthesize managedObjectContext = __managedObjectContext;
@synthesize managedObjectModel = __managedObjectModel;
@synthesize persistentStoreCoordinator = __persistentStoreCoordinator;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}
//...Omitted

您可以在应用程序plist中指定主nib文件的名称(默认为MainWindow.xib)


要进一步调查您的问题,您只需创建一个默认的基于视图的应用程序,看看有什么不同。在我看来,在interface builder中,应用程序代理的窗口属性和IB窗口对象之间似乎没有连接。这意味着在didFinishLaunchingWithOptions中,该窗口可能为零,因此您发送的消息将无效。

我认为AppDelegate.m中的这一行有问题:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
当应用程序启动时,您将创建一个具有空白白色背景的新窗口并显示它。因为您已经在Interface Builder中设计了窗口,所以不必在代码中再次设计。你所需要的一切在didFinishLaunching下。。。是:

[self.window makeKeyAndVisible];
return YES;
然后将“@synthetic window=\u window;”改为“synthetic window;”

下一步是更改AppDelegate.h文件。将代码更改为如下所示

@interface AppDelegate : UIResponder <UIApplicationDelegate>
{

}
@property (strong, nonatomic) UIWindow *window;
@接口AppDelegate:UIResponder
{
}
@属性(强,非原子)UIWindow*window;
现在,您可以在InterfaceBuilder中执行的操作是将AppDelegate.m中的window属性与您设计的窗口链接起来。创建窗口属性后,它将显示在EmptyIndowAppDelegate的Outlets下。单击并从清空螺旋拖动到侧面板上的窗口标签,或直接拖动到屏幕上设计的窗口


祝你好运

我将window对象设置为一个IBOutlet,并将window-nib对象连接到window-IBOutlet,但仍然没有成功。我将我的项目与模板化项目进行了比较。唯一的区别是模板化版本有一个视图控制器。但是,我不认为需要控制器?我从来没有尝试过没有视图控制器,我不明白为什么你的按钮不显示。您可以在代码中检查windows子视图和按钮的superview,设置一些iAction回调。不过,在任何应用程序中,最好使用视图控制器。它确实会显示。但当我点击它时,它不会变成蓝色。是的,我知道在一个真实的项目中,控制器会被重新编译,但我只想了解项目是如何从一开始就连接起来的。可能是默认情况下窗口的interactionEnabled不是。