在 UIScrollView 内的 UITableViewController 的 UITableViewCell 右侧看不到控件

Posted

技术标签:

【中文标题】在 UIScrollView 内的 UITableViewController 的 UITableViewCell 右侧看不到控件【英文标题】:Cannot see control on the right hand side of the UITableViewCell of a UITableViewController inside an UIScrollView 【发布时间】:2015-08-01 10:54:43 【问题描述】:

我试图在水平的UIScrollView 内显示 2 个UITableViewController's。我正在使用AUtoLayoutSize Classes。我的故事板大小为Inferred。这就是我为测试所做的:

添加UIScrollView 并从Resolve AutoLayout Issues 中选择Update Constraints for AutoLayout。 设置一个 UITableViewController 和一个继承自 UITableViewDelegateUITableViewDataSourceUIViewController(我想尝试两种方式来使用表格视图) 我在右侧添加了UIButton,对于自动布局,我选择顶部和后沿固定在右侧。

在运行UITableViewController 的代码后,如果单击单元格,我只能从 Button 中输入“n”,我可以看到该按钮。 对于UIViewController 表视图,我根本看不到按钮。

这是一个打印屏幕:

这是我的滚动视图控制器代码:

override func viewDidLoad() 
    super.viewDidLoad()

    self.automaticallyAdjustsScrollViewInsets = false

    let testTableVC = self.storyboard!.instantiateViewControllerWithIdentifier("TestTableViewController") as! TestTableViewController;
    let testVC = self.storyboard!.instantiateViewControllerWithIdentifier("TestViewController") as! TestViewController;

    var bounds = UIScreen.mainScreen().bounds
    var width = bounds.size.width
    var height = bounds.size.height;

    scrollView!.contentSize = CGSizeMake(2*width, height);


    let viewControllers = [testTableVC, testVC]

    var idx:Int = 0;


    for viewController in viewControllers 
        // index is the index within the array
        // participant is the real object contained in the array
        addChildViewController(viewController);
        let originX:CGFloat = CGFloat(idx) * width;
        viewController.view.frame = CGRectMake(originX, 0, width, height);
        scrollView!.addSubview(viewController.view)
        viewController.didMoveToParentViewController(self)
        idx++;
    

 

编辑:

https://github.com/adrianstanciu24/scrollviewtest

【问题讨论】:

我会说这将是自动布局问题。您创建了TestTableViewControllerTestViewController,但没有为滚动视图添加任何约束。您是否将该项目托管在公共场所? github.com/adrianstanciu24/scrollviewtest 【参考方案1】:

我创建了解决此问题的拉取请求。问题是您使用了默认的UITableViewCell 并在情节提要中添加了一些自定义内容。然后表格视图将默认单元格出列并在情节提要的单元格顶部绘制默认单元格(侧面有边距 - 因此只有按钮的右侧部分可见)。您需要创建自定义UITableViewCell,连接出口并将自定义单元格出列,默认的单元格对您的按钮一无所知。

【讨论】:

它可以工作,但对于我的真实项目,它仍然无法正常工作。我已经在使用自定义单元格,可能是另一个问题。 您确定您在cellForRowAtIndexPath(_:) 中设置了自定义单元格而不是默认的UITableViewCell 吗?它仍然可能是一个自动布局问题。 是的,我使用了自定义表格视图单元格。如果我把它放在github上,你有时间去看看吗?如果不是没有问题。 这是一个空项目 ;) 很抱歉。我忘了从 xcode 推送我的更改 :) 你现在可以查看

以上是关于在 UIScrollView 内的 UITableViewController 的 UITableViewCell 右侧看不到控件的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 内的 UIButton 在点击时不会触发

UITableViewCell 内的 UIScrollView - 水平滚动

UIScrollview 内的 UIView 内的 UILabel 上的 UIGestureRecognizer

在 UIScrollView 内的 UIImageView 上启用 GestureRegnizer

UIScrollView 内的 UITableView

UIScrollView 内的可选 UITableViewCells