我想在 iPad 应用程序中创建一个行为类似于操作表的自定义视图

Posted

技术标签:

【中文标题】我想在 iPad 应用程序中创建一个行为类似于操作表的自定义视图【英文标题】:I want to make a custom view that behaves like an actionsheet come up in an iPad app 【发布时间】:2014-03-27 21:02:52 【问题描述】:

我有主视图控制器,它嵌入在导航控制器中。

我想让另一个视图弹出并占据屏幕中间,所以它基本上看起来像一个操作表。为了弹出这个视图,导航栏上有一个按钮(称为“解锁”)。

我创建了一个新的 UIViewController,并为它提供了一个名为 CustomModalViewController 的新类。然后我在故事板上放了一个 UIView 。

我在正确的轨道上吗?接下来我该怎么办?我应该将此 CustomModalViewController 嵌入到原始导航控制器中吗?也许然后在某处使用此代码:

- (void)showLoginView
    [UIView animateWithDuration:.5 animations:^
    customModalView.frame=CGRectMake(0, 225, CustomModalView.frame.frame.size.width, CustomModalView.frame.frame.size.height);
    ];


- (void)hideLoginView
    [UIView animateWithDuration:.5 animations:^
    customModalView.frame.frame=CGRectMake(0, 480, CustomModalView.frame.frame.size.width, CustomModalView.frame.frame.size.height);
    ];

我是 Objective c 和 Xcode 的新手,我仍然很奇怪所有文件是如何组合在一起的。

【问题讨论】:

【参考方案1】:

UIActionSheet 禁用剩余屏幕。我建议你也这样做。因此,您使用 UIViewController 子类的方式将是一种合适的方式。您应该将操作按钮放在控制器视图的底部。

您可以将backgroundColor 设置为半透明视图以查看customViewController 以实现类似UIActionSheet 的一些视觉效果。您可以轻松地显示模态视图控制器,例如:

[self presentViewController:customViewController animated:YES completion:^
    // do something when opened, if you need
];

然后隐藏起来:

[self dismissViewControllerAnimated:YES completion:^
    // do something when closed, if you need
];

可以看出,您不必处理帧。在控制的方式上,你可以在你的主视图控制器中实现一些委托方法,比如CustomViewControllerDelegate,这样你就可以知道你的customViewController中发生了什么。

【讨论】:

我不明白。你是说除了添加你添加的显示/隐藏代码之外我不需要做任何其他事情? 你应该试一试。这比你想象的要容易。我的代码示例应该可以解决问题。 代码应该放在哪里?在 CustomModalViewController.m 中?然后我 ctrl+click 并从导航栏上的“解锁”按钮拖动到 CustomModalViewController.h 或其他什么? 不,您将把代码放在两个视图控制器中。在主视图控制器中放置“解锁”按钮。当它被点击时(通过 UIB 向它添加一个动作),分配你的customViewController,成为它的代表(连接 UIB 中的delegate 插座),并使用示例代码中的第一种方法present 它。您在customViewController 中放置另一个按钮(操作按钮),当它被点击时,调用委托函数。在委托方法的实现中,调用示例中的dismiss方法。如果你看不出来,我可以给你一些示例代码。

以上是关于我想在 iPad 应用程序中创建一个行为类似于操作表的自定义视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中创建一个行为类似于 Django 抽象基类的类?

UIControl 在 ios ipad 应用程序中创建弹出窗口

在 ios 中创建像 UiActionSheet 这样的自定义 uiView

如何在 postgresql 中创建只读视图,类似于 oracle?

如何在 iPad 的视图控制器中创建多个表格视图?

Sencha touch 中类似 iPad 的弹出窗口