- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个应用程序,用户可以在其中控制主页上的多个项目,并可以使用箭头按钮或菜单在它们之间切换。但是,我希望能够让用户通过菜单编辑项目的名称,以便当用户导航到菜单时,每一行都有与该行关联的项目的名称,并且在有一个按钮可以弹出警报,让用户更改项目的名称。目前我正在使用操作表来生成项目,但我找不到在行上显示多个项目的方法。我用于生成操作表的代码如下:
@IBAction func tapMGName(_ sender: Any) {
let actionSheetController: UIAlertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
for index in 1...5{
let addMGSelectAction: UIAlertAction = UIAlertAction(title: "Mouthguard \(index)", style: .default){action -> Void in
let mainStoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let SettingsViewController : UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "SettingsViewController") as UIViewController
self.present(SettingsViewController, animated: false, completion: nil)
}
actionSheetController.addAction(addMGSelectAction)
}
let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .destructive, handler: { (action) -> Void in })
actionSheetController.addAction(cancelAction)
self.present(actionSheetController, animated: true, completion: nil)
}
最佳答案
不幸的是,您需要从头开始构建 Controller 。虽然这看起来令人畏惧,但最难的部分是表示逻辑。之后,只需根据用户界面用例对这个主类进行子类化,并在构建时为每个子类提供自己的逻辑即可。
这是自定义 AlertController 的最佳方法: https://gist.github.com/murphman300/4a56ace35d0ccdbf3a0c923b4ec7dc96
您在这里使用像此要点文件中的主类,请注意每个部分的注释。
然后当你对每种类型进行子类化时
//An example subclass of PopUpAlertController
class SpecificAlertControllerSubclass : PopUpAlertController {
override func set() {
super.set() //Good idea to call the super., since you might want to add basic stuff all the time, in that case you would do this in the original set() method, not here in the subclass' set() override.
//Here you add your own content.. that you instantiate in the subclass. The fact set() is being called in viewDidLoad() means you don't need to worry about calling it later on.
}
}
class TestController : UIViewController, PopUpAlertControllerDelegate {
var popup : SpecificAlertControllerSubclass?
func bringUpPopUp() {
popup = SpecificAlertControllerSubclass()
popup?.delegate = self
present(popup!, animated: true) {
print("Popup Presented")
}
}
/*
The Delegate methods you will always need to consider when using it.
*/
func popUp(controller: PopUpAlertController, didDismiss withInfo: Any?) {
if let pop = popup, controller == pop {
//checks if the delegated controller is popup..
popup = nil
let info = withInfo != nil ? String(describing: withInfo!) : "unknown"
print("Dismissed PopUp, with reason: \(info)")
}
}
func popUp(controller: PopUpAlertController, selected item: [String : Any]?) {
//Here is where you would handle the user selecting one of your options. Dismissing the popup andPresenting another controller. or if you want the popup subclass to handle the logic and the next controller, you don't call this method, but handle it in the subclass object.
}
}
因此这将以与 UIAlertControllers 相同的方式弹出一个 View 。然而,它的外观完全取决于你。使用此类时需要记住的一些事项:
set()
覆盖:始终记住您要将 subview 添加到popUp
查看,不给view
。当然,你可以将popUp重命名为无论你想要什么..viewDidAppear
如果在以下时间完成会更有用子类级别,原因与上一点相同。你可以在那里插入单独的演示方法。第 3 点和第 4 点意味着 SpecificAlertControllerSubclass
变成这样:
class SpecificAlertControllerSubclass : PopUpAlertController {
override func set() {
super.set() //Good idea to call the super., since you might want to add basic stuff all the time, in that case you would do this in the original set() method, not in the subclasses.
//Here you add your own content..
modalPresentationStyle = //which ever one you want
modalTransitionStyle = //which ever one you want
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .allowAnimatedContent, animations: {
self.view.backgroundColor = UIColor.black.withAlphaComponent(0.5)
self.popUp.alpha = 1
}) { (v) in
}
}
}
就像对第二个委托(delegate)方法的评论所解释的那样,您需要决定哪个 Controller 应该处理操作逻辑,在我看来,这取决于您在按下这些操作时是否呈现新 Controller ,或者您只是切换用户界面。在后一种情况下,您可以从 PopUpAlertController
中创建 didSelect 方法。 protocol
一种可选方法。 Here's a good tutorial on delegates .
我还将 popUp 的 alpha 设置为 0,这是针对您的用例,即中心屏幕淡入效果。当然,如果你想让弹出窗口滑入,你可以改变set()
中的alpha值。覆盖。如果你还想要动画幻灯片,你只需要在 set()
中设置 popUp 的初始位置即可。覆盖,并在 viewDidAppear
中您希望它出现的位置设置动画。覆盖。因此,这种方法确实要求您跟踪如何在子类中更改主类的属性,但是,当您掌握了它的窍门后,它的可定制性非常好。
从这里,你几乎可以做任何你想做的事情。只需记住在选择操作时处理弹出窗口的 ui 过渡,以确保过渡平滑等。
至于你想要的外观。我认为你最好的方法是使用 UITableView
具有全长边框,或 UICollectionView
。您应该在 PopUpAlertController 中委托(delegate)您决定的任何一个,并用它们各自的 didSelectItemAt
解释选择方法。方法并调用PopUpAlertControllerDelegate
的popUp(controller: PopUpAlertController, didDismiss withInfo: Any?)
。这将允许您为每一行设置自定义图标。
这是一个关于以编程方式完成 UICollectionView 的很好的教程: https://www.youtube.com/watch?v=3Xv1mJvwXok&list=PL0dzCUj1L5JGKdVUtA5xds1zcyzsz7HLj
关于ios - 在 Swift 中为操作表创建一行多个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45060923/
所以我有这个 javascript 片段,它有两个按钮可以进入全屏,一个按钮可以退出全屏。我想做到这一点,如果我不在全屏模式下,按钮会显示转到全屏模式,而当我处于全屏模式时,按钮会显示退出全屏模式..
我在自定义控件中添加了一个新属性作为可扩展属性,例如属性网格中的字体属性。在 Windows 窗体应用程序项目中使用我的自定义控件后,我在属性网格中看到一个省略号 (…) 按钮,如字体属性的“…”按钮
我在自定义控件中添加了一个新属性作为可扩展属性,例如属性网格中的字体属性。在 Windows 窗体应用程序项目中使用我的自定义控件后,我在属性网格中看到一个省略号 (…) 按钮,如字体属性的“…”按钮
我尝试将 Twitter 上的“Tweet Me”按钮 ( http://twitter.com/goodies/tweetbutton ) 添加到我的网站。然而,每当按下按钮时,我都会收到此 Jav
我试图在我的文本区域中获取一个按钮值,如果我使用 则工作正常但如果我使用那么它就不起作用了。你能找出问题所在吗? HTML 1 2 3 4 JavaScript $(document).read
我的 C# Winform 面板中有一堆文本框。每行文本框的命名如下: tb1 tbNickName1 comboBox1 tb2 tbNickName2 comboBox2 tb3 tbNickNa
我有一个表单,其中过滤器下方有按钮(应用过滤器和清除过滤器),我试图在单击“应用”按钮时显示“清除”,并在单击“清除”按钮时隐藏“清除”按钮。 下面的代码(如果我的表有的话):
excel 按钮正在工作,但是当我添加 pdf 按钮时,它添加仅显示 pdf 按钮 excel 按钮在 pdf 按钮添加后隐藏 $(document).ready(function() { $
我想创建一个 div 作为标题并分成 3 列,并按以下顺序在其中放置 2 个按钮和一个标题:Button1(左位) Title(居中) Button2(右位) 这是我为这个 div 编写的代码:
仅当选中所有框时才应禁用“允许”按钮。我该怎么做?我已经完成了 HTML 部分,如下所示。如何执行其中的逻辑部分?即使未选中一个复选框,也应禁用“允许”按钮
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
如您所知,您可以使用 2 种方法在 HTML5 中呈现按钮: 使用 void 元素 或 如果您需要内容,请使用 元素(不是空元素)。 在JSF2中,有2种方式生成按钮;与UICommand或 UIOu
我尝试根据表单元素的更改禁用/启用保存按钮。但是,当通过弹出按钮选择更改隐藏输入字段值时,保存按钮不受影响。 下面是我的代码。我正在尝试序列化旧的表单值并与更改后的表单值进行比较。但我猜隐藏的字段值无
我有用于在消息(电子邮件、短信)上输入内容的 EditText。我希望在单击 ActionDone 按钮时立即发布消息。我为此使用以下代码: message.setOnEditorActionList
我的 Android 应用程序中有一堆 EditText,每个都将 InputMethod 设置为 numberSigned。我的目标设备没有硬件键盘,而是使用软件键盘输入数字。 Android 将输
我无法以编程方式隐藏弧形菜单中的 fab 按钮。我正在使用https://github.com/saurabharora90/MaterialArcMenu在我的代码中。如何在Java中以编程方式隐藏
我已经看到这在其他类型的对话框窗口中是可能的,例如“showConfirmDialog”,其中可以指定按钮的数量及其名称;但是使用“showInputDialog”时是否可以实现相同的功能?我似乎无法
相同的按钮用于激活和停用。第一次,当代码运行按钮单击并成功“停用”时。但第二次,代码无法找到该元素。第一个案例按钮位于第二个“a”标签中,然后停用第一个“a”标签中的按钮。 案例1: Edit
是否可以将按钮的 onclick 操作设置为 JavaScript 变量?这个想法是我们用 JavaScript 控制一个表。每当点击该表的一行时,我们就会更新一个 JavaScript 变量。该 v
我想创建一个按钮,它包含左侧的文本和右侧的复选框(或任何其他组件)。我怎样才能做到这一点? 我发现我可以制作自己的 View extends Button,但是如果可以的话我应该如何实现 onDraw
我是一名优秀的程序员,十分优秀!