Interface Builder 中的多个视图状态

2024-05-05

我正在处理一个有 3 种状态的屏幕:

  • 证实
  • Loading
  • Error

前两个非常简单,因为只更改了标签文本。第三个比较棘手,因为我需要显示一条错误消息并在其上有一个重试按钮。

另外,我希望将所有这些都放在一个控制器下(我想这是最简单的部分。)

问题是:如何在 Interface Builder 中执行多个视图状态?以前有人这样做过吗?或者我以错误的方式处理这件事?


您可以尝试添加根据需要添加或删除的其他视图。在带有“文件所有者”、“第一响应者”、“视图”等的窗口中,从库中添加三个 UIView。您可能需要将它们的名称从“View”更改为“Validating”、“Loading”和“Error”。

现在打开每一个,并根据需要添加按钮、标签和其他类似的东西来自定义它。

返回 XCode,声明新视图:

IBOutlet UIView *validView;
IBOutlet UIView *loadView;
IBOutlet UIView *errorView;

并确保在 InterfaceBuilder 中进行适当的连接。您希望从这些视图中的任何一个链接起来的任何操作都应该效果很好。

现在,要进行切换,请创建一个操作(或三个不同的操作)。这可以是 IBAction,也可以不是,如您所愿。在标题中:

-(void)showError;

现在对于实现,您可能需要这样的东西。

-(void)showError {
  // skip this if you always arrive from the validView
  if ([validView superview]) {
    [validView removeFromSuperview];
  } 
  [self.view addSubview:errorView];
}

如果您愿意,您可以对动画更加感兴趣:

    -(void)toggleErrorWithFlip {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.8];
    [UIView setAnimationTransition:([errorView superview] ? UIViewAnimationTransitionFlipFromLeft : UIViewAnimationTransitionFlipFromRight) 
                           forView:[self view]
                             cache:YES];
    if ([errorView superview]) {
        [errorView removeFromSuperview];
    } else {
        [[self view] addSubview:errorView];
    }
    [UIView commitAnimations];
}

“重试”按钮可能会触发以下操作:

-(IBAction)retryLoad {
  [errorView removeFromSuperview];
  [self.view addSubview:validView];
  // do some stuff that retries whatever was tried and failed
}

同样,无论有没有动画,这种情况都可能发生。

如果有一个默认视图,您总是依赖于此视图(例如 validatingView),则将其设为原始“视图”,然后在其顶部添加其他两个视图(例如 loadView 和 errorView)。这可能会节省一些工作,具体取决于您希望事情如何进行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Interface Builder 中的多个视图状态 的相关文章

  • 如何在UiView中添加UIImagePickerController

    如何在TabBarApplication中的UiView中添加UIImagePickerController 无论您是否在选项卡中 此代码都会进入您视图的 ViewController 类 当您需要时创建一个选择器 UIImagePicke
  • 以编程方式停止 iphone 上的 uipickerview 动画

    我有一个包含选择器和 UIToolbar 的 UIActionSheet UIToolBar 上有一个保存按钮 然而 我的一些用户报告说在 UIPickerView 停止旋转之前按下了保存按钮 因此仅检索初始值 旋转之前 有没有办法在用户点
  • 为什么我无法更改 UIBarButtonItem 的标题?

    我想改变UIBarButtonItem s title 但这段代码不起作用 void viewDidLoad self smay void smay AppDelegate apd AppDelegate UIApplication sha
  • 在 UIWebView 中禁用复制和粘贴

    几乎 我已经尝试了一切方法来禁用复制 粘贴UIWebView但对我来说没有任何作用 我正在加载我的UIWebView来自字符串 字符串数组 如下所示 webView loadHTMLString NSString stringWithFor
  • 双击并滑动/拖动手指以放大/缩小

    如果有人使用过 iOS 版谷歌地图应用程序 那么它有一个很棒的功能 可以用一根手指放大 缩小 双击 uiscrollview 然后立即向上或向下滑动手指以放大 缩小 有谁知道这是如何实现的 谷歌发布了任何片段吗 我将此功能添加到我的 UIS
  • AGVTool new-version 和 What-version 不对应

    当我做 agvtool new version all 99 它更新我的 Info plist 文件 但是 如果我这样做 agvtool what version or agvtool next version 我收到此错误 There d
  • 如何从地址簿中获取一个人的电话号码?

    我想做的就是让用户从地址簿中选择一个号码 我在这个问题中找到了代码 如何从地址簿联系人获取电话号码 iphone sdk https stackoverflow com questions 286207 how to get a phone
  • Cocos2D中如何让物体对触摸做出反应?

    好吧 我开始更多地了解 Coco2D 但我有点沮丧 我发现的很多教程都是针对过时版本的代码 因此当我浏览并了解它们如何执行某些操作时 我无法将其翻译成我自己的程序 因为很多都发生了变化 话虽如此 我正在使用最新版本的 Coco2d 版本 0
  • 如何正确释放附加 C 数组中的内存?

    我只是想弄清楚为什么下面的代码会泄漏内存 并且我有一种有趣的感觉 我没有正确释放数组内存 这是一个更广泛的 Objective C 应用程序中的 C 函数 我不是 C 语言的本地人 我尝试过在数组上使用 free 但有一种感觉这不是全部故事
  • UIKeyboardFrameBeginUserInfoKey 和 UIKeyboardFrameEndUserInfoKey

    在管理键盘中文档 http developer apple com iphone library documentation StringsTextFonts Conceptual TextAndWebiPhoneOS KeyboardMa
  • 如何重置(即取消缩放)UIScrollView?

    我有一个 UIScrollView 其中包含图像和分段控件 该控件允许用户在 ScrollView 内切换图像 如果我只是将图像交换到 UIImageView 内部 它将以放大状态显示新图像 如何将 UIScrollView 重置回未放大状
  • 无法使用 SLComposeViewController 将图像发布到 Facebook?

    我想将图像发布到 Facebook 和 Twitter 我对 twitter 很满意 但对使用 SLComposeViewController 类的 facebook 不太满意 无需添加图像 我就可以将文本和网址发布到 Facebook 中
  • 使用远程数据编写 Android、iPad、iPhone 客户端的技术

    我需要探索世界 你写了一个杀手级应用程序 但你有 Android iPhone iPad 客户端吗 我的问题是 1 向这些设备发送数据的最佳方式是什么 按照建议进行肥皂和休息here https stackoverflow com ques
  • cellForRowAtIndexPath:未调用

    我的应用程序有两种状态 已登录和未登录 并且我有以下架构 大大简化 ViewController A 包含一个搜索框和一个表视图 ViewController B 用于登录应用程序 流程如下 用户未登录 A 被压入堆栈 在viewWillA
  • 查找 iPhone 上已安装应用程序的列表

    是否可以以编程方式查找我的 iOS 设备上安装的所有应用程序的名称 有没有可用的API 谢谢您的帮助 不可以 由于沙盒环境 iOS 应用程序无法访问其他应用程序的信息
  • UILabel 文本的大纲

    如何向白色 UILabel 文本添加黑色轮廓 一种选择是设置阴影 这可能不完全是您想要的 但可以达到类似的效果 您可以手动调整偏移量 UILabel myLabel lbl shadowColor UIColor whiteColor lb
  • 配置文件与应用程序标识符不匹配

    我刚刚为应用程序 ID 49776ZQRBG com gfeed ride 创建了一个 AdHoc 分发配置文件 我在 info plist 中将 Bundle ID 设置为此 但项目设置中的此配置文件显示为灰色并显示 配置文件与应用程序标
  • XCode iPhone 项目中目标所有配置的通用预处理器宏

    我的应用程序的每个目标通常有四种配置 调试 发布 分发 临时 有没有办法为所有 4 个添加一个通用宏 同时不破坏我到目前为止设置的宏 您在编辑器中看到 多个值 提前致谢 奥比旺 在前缀头文件中定义宏 将包含在所有源文件中
  • iOS 4.3 SDK - 在 3G 设备上调试

    目前有关 iOS 4 3 设备支持的信息还很少 然而 由于 iPhone 3G 设备 以及较旧的 iPod touch 设备 缺乏 4 3 Beta 版 许多人认为这可能是旧设备操作系统升级的终结 即使这个假设现在是错误的 但有一天它也不会
  • 训练 tesseract 与 iPhone 一起使用

    我正在尝试在我的 iPhone 应用程序中使用 tesseract 2 04 只想检测数字 我在这里所做的首先是使用这篇文章交叉编译 tesseract 以生成 lib 文件http robertcarlsen net 2009 07 15

随机推荐