我有一个通用应用程序,它在同一个文件 MainWindow.xib 中包含所有视图。今天我决定将这些视图分成各自的 xib 文件(例如 MainMenuController.h、MainMenuController.m 和 MainMenuController.xib)。现在我无法接收和 IBActions。这是我一步一步做的:
我创建了一个名为 MainMenuController.xib 的新 .xib 文件,并将它的 File's Owner 设置为已经存在的 MainMenuController 类。
我从 MainWindow.xib 文件中复制了 MainMenuController 对应的视图,并将其粘贴到新创建的 MainMenuController.xib 中。我将文件所有者的视图设置为新粘贴的视图(在 IB 中连接)。
在 info.plist 中,我删除了“主 xib 文件基本名称”的条目,因此应用程序不会自动打开 MainWindow.xib。
我修改了应用程序委托以编程方式创建窗口,并使用以下代码将 MainMenuController 添加到其中:
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; mainMenuController = [[MainMenuController alloc] init]; self.window.rootViewController = mainMenuController; [self.window makeKeyAndVisible]; [mainMenuController release];
“mainMenuController”和“window”是实例变量,也被声明为属性。
我只有一个 AppDelegate 类和 main.m 包含:
int main(int argc, char *argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); }}
现在,当应用程序打开时,我看到 MainMenuController 的视图出现了。此时,我开始在新的 xib 文件中的粘贴视图中连接 IBOutlets 和 IBActions。尽管我在 File's Owner 中看到了 IBOutlets 并正确连接了它们,但是当我按下按钮时,IBAction 的函数从未被调用。
我想到的可能错误:(1)应用程序窗口设置不正确,它没有传递事件,(2)复制视图时有东西卡住或丢失,仍然指向旧所有者(3)卡住了错误xcode 项目
你认为问题可能是什么?是上述之一吗?我该如何解决这个问题?任何帮助表示赞赏。
提前致谢。