【问题标题】:How to display a hidden part right underneath the submit button after it's clicked?单击提交按钮后如何在提交按钮下方显示隐藏部分?
【发布时间】:2016-08-27 00:38:36
【问题描述】:

所以,我试图在单击提交按钮后使隐藏部分可见。更具体地说,这部分应该是一个 TableView,它将在用户点击提交按钮之前显示用户选择/条目。有没有办法做到这一点?

请查看图片作为示例。

我尝试在 CocoaPods 中使用 ExpandableTableViewController 2.0。它使用 Tableview 控制器使表格单元格可扩展。但是,我不知道如何将它实现/连接到我的 ViewController 中。如果你有更好的方法,请告诉我!

提前感谢您的帮助!

【问题讨论】:

  • 要显示包含数据的表格,您可以简单地将其首先隐藏,例如 viewDidLoad 中的 tableView.hidden = true ,然后在用户单击提交按钮时将 tableView.hidden = false 隐藏起来。关于 ExpandableTableViewController 您可以查看它的文档并了解如何将其集成到您的应用中。
  • 如果你简单的设置hidden = true,那么在提交按钮和Back & Next按钮之间仍然会有很大的空白空间供表格使用

标签: ios swift xcode uitableview expandable


【解决方案1】:

您还可以在代码中管理UITableView 的高度约束以获得展开/折叠效果

这里是示例代码

@interface ViewController ()
{
    BOOL toggleToshow;
}
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *heightConstraintTbl;

- (IBAction)btnSubmitClicked;


@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    toggleToshow = YES;
    self.heightConstraintTbl.constant = 0;

}

- (IBAction)btnSubmitClicked {

    [UIView animateWithDuration:1 animations:^{
        self.heightConstraintTbl.constant = toggleToshow?285:0;

        toggleToshow = !toggleToshow;

        [self.view layoutIfNeeded]; // Make sure to Call this for getting nimation effect
    }];

}

这里是快速版本

import UIKit

class AnimateViewController: UIViewController {

    var toggleToshow = true;

    @IBOutlet weak var heightConstraintTbl: NSLayoutConstraint!

    @IBAction func btnSubmitClicked() {

        UIView.animateWithDuration(1, animations: { () -> Void in

            if self.toggleToshow{
                self.heightConstraintTbl.constant = 285
            }else{
                self.heightConstraintTbl.constant = 0
            }

            self.toggleToshow = !self.toggleToshow

            self.view.layoutIfNeeded(); // Make sure to Call this for getting nimation effect
        })
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        toggleToshow = true;
        self.heightConstraintTbl.constant = 0;

        // Do any additional setup after loading the view.
    }

编码愉快...

查看屏幕截图以链接约束

【讨论】:

  • 嗨@Janmenjaya,非常感谢您的帮助。屏幕记录看起来很棒。我想知道你是否可以用swift写它们。这将是一个很大的帮助。再次感谢!
  • @WoShiNiBaBa,我加了swift版的代码,请看代码。如果您觉得有用,请将答案标记为已接受。
  • 感谢您的快速回复。你能告诉我这行“@IBOutlet weak var heightConstraintTbl: NSLayoutConstraint!”是哪个元素吗?连接至?它不允许我连接到 tableview。
  • 打开story board,然后选择table view,进入size inspector,在Constraints部分点击tableView的height constraint,然后双击height Constraint,现在可以看到要连接的约束了,对于您更好地理解我在答案中添加了屏幕截图,请随时询问您是否遇到任何困难。
【解决方案2】:

在您的viewDidLoad() 中,隐藏表格,然后使用self.Backview.center.y += 350(或使其关闭所需的许多像素)向上移动您的“后退”和“下一个”视图。

然后,一旦您收到一个条目,取消隐藏它,然后使用

向下滑动 backView
UIView.animateWithDuration(0.5, delay: 0.0,
                               options: [.CurveEaseOut], animations: {

        self.backView.center.y -= 350

        }, completion: nil)

这个动画提供了一个很好的滑动视图,并缓和,给人一种幻灯片的错觉。这是我之前实现过的效果,确实效果很好。

祝你好运!

【讨论】:

  • 感谢您的帮助。我使用了您的方法,并尝试通过单击提交按钮首先取消隐藏表格。但是,每次点击提交按钮,Backview 都会上移 350。另外,table view 还留有空间。
  • code override func viewDidLoad() { super.viewDidLoad() //功能:隐藏/显示表格视图 tableHideFunctionTest.hidden = true //功能:将Backview向上移动以覆盖表格视图自身.backView.center.y += 296 } @IBAction fund submitClicked(sender: UIButton) { tableHide.hidden = false UIView.animateWithDuration(0.5, delay: 0.0, options: [.CurveEaseOut], animations: { self.backView.center .y -= 296 },完成:无)}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-22
  • 1970-01-01
相关资源
最近更新 更多