当我将UITableView添加到子视图时,单元格是不可选择的

时间:2015-06-25 07:44:11

标签: ios objective-c uitableview uiview

我的自定义类是subclass UIView。我添加了UITextFieldtableview作为subview。然后,在storyboard中,我将UIView's类设置为自定义类。

我在自定义类中添加的tableview扩展了大于最初的UIView,(来自storyboard)。所以我改变了self.frame's身高。

当我运行该应用时,我可以输入我添加的textField,但我无法在tableview中选择任何内容。我可以看到cells,但无法选择它们。

如何使cells可选?

以下是最相关的代码:

_textField = [[UITextField alloc] initWithFrame:self.bounds];
[self addSubview:_textField];

CGRect tableViewsFrame = self.textField.bounds;
tableViewsFrame.origin.y += self.textField.bounds.size.height;
tableViewsFrame.size.height = 200;

_tableView = [[UITableView alloc] initWithFrame:tableViewsFrame style:UITableViewStylePlain];
[self addSubview:_tableView];

CGRect viewsFrame = self.bounds;
viewsFrame.size.height = self.textField.frame.size.height + self.tableView.frame.size.height + 100;
[self setFrame:viewsFrame];

以下是Jumpshare上的测试项目的链接:testProject

2 个答案:

答案 0 :(得分:1)

您不小心将Selection的{​​{1}}更改为TableView

enter image description here

修改

您可以将No Selection添加到tableView,例如:

window

我已经实现了一个简单的弹出视图:

tableViewsFrame.origin = [self.superview convertPoint:self.frame.origin toView:self.window];
tableViewsFrame.origin.y += self.textField.frame.size.height;
_tableView.frame = tableViewsFrame;
[self.window addSubview:_tableView];

然后你可以:

@interface SimplePopupView : UIControl

+ (void)showView:(UIView *)view fromView:(UIView *)fromView;

@end

@implementation SimplePopupView

+ (void)showView:(UIView *)view fromView:(UIView *)fromView {
    UIView *window = [UIApplication sharedApplication].keyWindow;

    SimplePopupView *popupView = [[SimplePopupView alloc] initWithFrame:window.bounds];
    [popupView addTarget:popupView action:@selector(dismiss) forControlEvents:UIControlEventTouchUpInside];
    [window addSubview:popupView];

    CGRect viewFrame = fromView.bounds;
    viewFrame.origin = [fromView convertPoint:fromView.frame.origin toView:window];
    viewFrame.origin.y += fromView.frame.size.height;
    viewFrame.size.height = 200;

    view.frame = viewFrame;
    [popupView addSubview:view];
}

- (void)dismiss {
    [self removeFromSuperview];
}

@end

答案 1 :(得分:0)

问题是您没有增加表格视图单元格行高度并添加内容多于表格视图单元格高度。 在您能够选择表视图单元格之后,在代码中更改文本框架框架。

- (void)setupView
{
    // Configure the TextField
     _textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, 45)];
}

同时将第三个表格视图单元格高度更改为大于60或与视图大小相似。然后它将被选中。