gpt4 book ai didi

iphone - Xcode 错误 : Incompatible Objective-C types. 预期为 'struct UIView'

转载 作者:行者123 更新时间:2023-12-03 21:20:28 25 4
gpt4 key购买 nike

我正在启动一个具有两个 View 的多 View 应用程序:NewGame 和 Players。我以为我已经正确设置了一切,但显然不是。

MainViewController.h

#import <UIKit/UIKit.h>

@class NewGame; @class Players;

@interface MainViewController : UIViewController {
IBOutlet NewGame *newGameController;
IBOutlet Players *playersController;
}

-(IBAction) loadNewGame:(id)sender;
-(IBAction) loadPlayers:(id)sender;

-(void) clearView;

@end

MainViewController.m

#import "MainViewController.h"
#import "NewGame.h"
#import "Players.h"

@implementation MainViewController

-(IBAction) loadNewGame:(id)sender {
[self clearView];
[self.view insertSubview:newGameController atIndex:0];
}

-(IBAction) loadPlayers:(id)sender {
[self clearView];
[self.view insertSubview:playersController atIndex:0];
}

-(void) clearView {
if (newGameController.view.superview) {
[newGameController.view removeFromSuperview];
} else if (playersController.view.superview) {
[playersController.view removeFromSuperview];
}
}

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[self loadNewGame:nil];
[super viewDidLoad];
}

几张图片...

/image/GwXMa.png/image/XHktH.png

最佳答案

View 是代表屏幕上显示内容的对象。 View Controller 是执行与这些 View 相关的应用程序逻辑的对象。 View 层次结构是 View 的集合。您正在尝试将 View Controller 添加到 View 层次结构中,就好像它实际上是一个 View 一样。

粗略地说,您的应用程序的每个“屏幕”都应该有一个 View Controller 。该 View Controller 可以管理任意数量的 View 。其主视图可通过其 view 属性访问。

让应用程序正常运行的一个快速修复方法是添加 View Controller 的主视图,而不是 View Controller 本身。因此,例如:

[self.view insertSubview:playersController atIndex:0];

...会变成这样:

[self.view insertSubview:playersController.view atIndex:0];
话虽如此,从长远来看,这不是一个好的解决方案,您应该研究一种更结构化的方式来组织从 View Controller 到 View Controller 的转换。 UINavigationController 对于初学者来说是一个不错的选择。

关于iphone - Xcode 错误 : Incompatible Objective-C types. 预期为 'struct UIView',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5208210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com