gpt4 book ai didi

iphone - 单个 View Controller 的两个 View

转载 作者:行者123 更新时间:2023-11-28 20:22:44 25 4
gpt4 key购买 nike

我对 iOS 编程完全陌生。我正在开发一个应用程序,我需要一个不同的纵向 View 和另一个横向 View 。即使 View 不同,两个 View 中的按钮和其他控件也是相同的。所以我想为两个 View 保持从按钮/标签到 View Controller 的相同连接。因此,如果我在我的 View Controller 中更改标签的值,它应该在 View 中更改,而不管我呈现的 View 如何。

现在我面临的问题是我无法将两个不同的 Root View 添加到 Storyboard中的一个项目。我试图向主视图添加两个不同的 subview 。这样我就可以创建 View ,但我无法将两个 View 的按钮连接到一个连接。例如,

@property (strong, nonatomic) IBOutlet UIButton *buttonNext;    

只能在一个 View 中连接到下一个按钮。

为了解决这个问题,我在 Storyboard中创建了两个不同的 View ,并为它们添加了相同的 View Controller 。然后为每个 View 创建一个 segue,如下所示:

@property (strong, nonatomic) IBOutlet UIView *portraitView;
@property (strong, nonatomic) IBOutlet UIView *landscapeView;

并且在我的 View Controller 中添加了:

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
[self adjustViewsForOrientation:toInterfaceOrientation];
}

- (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation {
//NSLog(self.view.restorationIdentifier);
if (orientation == UIInterfaceOrientationMaskLandscape || orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)
{
if(self.landscapeView == nil)
{
self.landscapeView =[[UIView alloc] init];
}
self.view = landscapeView;
}
else if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown)
{
self.view = portraitView;
}
}

问题是第二个 View 没有正确加载。最初它被加载为零。即使我在代码中初始化 View ,它也不会在 View 内初始化 subview /控件。在过去的三天里,我一直坚持这个。任何帮助将不胜感激。

编辑 1:

我在这里添加了一个示例代码:http://cl.ly/2z3f3E290f0R

最佳答案

你可以用单一 View 试试这个:

首先

viewDidLoad方法中,Device Orientation的代码

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged) name:@"UIDeviceOrientationDidChangeNotification" object:nil];

第二

OrientationChanged 的方法

-(void)orientationChanged {

//Check for Portrait Mode
if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation))
{
x=25; y=30;
}
//Lanscape mode
else {
x=50; y=40;
}

[button setFrame:CGRectMake(x, y, 80, 80)];
}

在这里,您可以随意取“X”和“Y”。

此方法总是在设备旋转时调用。

希望对您有所帮助。

谢谢。

关于iphone - 单个 View Controller 的两个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15331597/

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