gpt4 book ai didi

objective-c - UIViewControllers 问题

转载 作者:行者123 更新时间:2023-12-01 16:56:51 26 4
gpt4 key购买 nike

您好,感谢您的帮助。在 Xcode4 中使用 ViewControllers 时,我遇到了一个非常奇怪的问题。首先我不得不说我没有使用 Storyboard,我更喜欢以编程方式创建任何 UI 元素。所以我设置了一个 UIButton,我希望它在按下时将我带到一个新的 View Controller 。这是我用于按钮的代码:

-(void)settingsAndExportHandle:(UIButton *)buttonSender {
SettingsViewController* settingView = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
settingView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:settingView animated:YES];

}

此按钮在 RootViewController 的 viewDidLoad 方法中初始化和分配。当我按下按钮时,我想切换到另一个 View Controller (在本例中为 SettingsViewController)。

奇怪的是,当我按下按钮时,翻转 Controller 的动画效果很好,但是当它完成时,我获得了与 RootViewControllers 上完全相同的东西(相同的自定义 View 、相同的按钮、所有相同的东西!)。问题是:我错过了什么?我不得不说我使用 ARC(自动引用计数),所以我不能释放或解除分配我在 RootViewController 上创建的 View 和按钮。

任何帮助将不胜感激。谢谢你们!

最佳答案

推送和模态呈现 View Controller 不会释放呈现它们的 View Controller 。它只是将额外的 View Controller 添加到堆栈中。您需要实现一个回调方法,以便当用户点击按钮返回 Root View Controller 时,您的设置 View Controller 让 Root View Controller 知道将要发生的事情,以便您可以调用您编写的方法将界面重置回您需要的任何状态。您也可以使用 viewWillAppear:但这有点乱。

但是,根据 Apple 人机界面指南,用户希望当他们推送 View Controller 或以模态方式呈现它时,他们所在的 View Controller 将保存状态,并与他们回来时离开时的状态完全相同。在导航 Controller 上下文中未保留状态时,这令人不安和烦人。是尤其是 当它以模态呈现时很烦人。

想一想——用户在一个假设的邮件应用程序中。他们开始输入电子邮件并设置字体大小和颜色。他们点击添加附件按钮,该按钮会弹出一个模态视图 Controller ,允许他们选择图片。他们选择图片,模态视图被关闭,在您的实现中,邮件撰写界面将重置,电子邮件内容将消失,或者至少选择的字体大小和颜色将恢复为默认值。这可不是什么好的体验。

关于objective-c - UIViewControllers 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10968643/

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