我想在 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