用户单击按钮时如何动态创建和删除视图[重复]

Posted

技术标签:

【中文标题】用户单击按钮时如何动态创建和删除视图[重复]【英文标题】:How to dynamically create and delete view when user clicks on button [duplicate] 【发布时间】:2017-01-04 12:36:41 【问题描述】:

请看一下这个场景。

    UIViewController 中有一个UIScrollView,在其中有一个UIView 和一个UIButton。当用户点击UIButton 时,应该添加一个新的UIView,具有相同的xinvialViewWidth + 30width身高UIButton

    如果用户单击第二个UIButton,则必须创建一个新的第三个UIView 和第三个UIButton。同样,您必须创建 n 个视图。

    在视图中会有另一个UIButton delete。当点击它时,UIView 应该从UIScrollView 中删除。

例如,如果要删除第 5 个UIView,则应单击第 5 个UIView 中的删除UIButton

我已经回答了很多问题,但我没有得到正确的答案。

【问题讨论】:

你应该更喜欢UITableView @matt 我只能使用滚动视图 @danh 我认为这是新问题,我没有找到任何重复的问题。 【参考方案1】:

创建一个自定义视图,其中包含两个按钮添加和删除。你可以这样做:

-(UIView *)getNewViewWithTag:(NSInteger )tag
        UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)];//Set appropriate frame
        UIButton *addButton = [UIButton buttonWithType:UIButtonTypeCustom];
        addButton.frame = CGRectMake(0,0,50,50); //Set appropriate frame
        addButton.tag = tag;
        [addButton addTarget:self action:@selector(addNewView:) forControlEvents:UIControlEventTouchUpInside];
        [containerView addSubview:addButton];

        UIButton *deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
        deleteButton.frame = CGRectMake(50,0,50,50); //Set appropriate frame
        deleteButton.tag = tag;
        [deleteButton addTarget:self action:@selector(deleteView:) forControlEvents:UIControlEventTouchUpInside];
        [containerView addSubview:deleteButton];
        containerView.tag = tag;
        return containerView;
    
    -(void)addNewView:(id)button
        NSInteger tag = [button tag];
        UIView *view = [self getNewViewWithTag:tag+1];
        //set appropriate frame
        [scrollView addSubview: view];
    
    -(void)deleteView:(id)button
        NSInteger tag = [button tag];
        UIView *viewToDelete = [scrollView viewWithTag:tag];
        [viewToDelete removeFromSuperview];
    

【讨论】:

感谢您的快速回复,我会检查并通知您 @Hi rahul,在检测视图时出现了一些问题,问题是如果您在第 5 个视图中按删除按钮,则第 5 个视图必须删除而不是第 4 个视图。 还有一个是如果点击添加按钮第一个视图第二个必须创建并且第一个视图中的添加按钮必须隐藏 如果删除了中间视图,那么如何重新排列视图。

以上是关于用户单击按钮时如何动态创建和删除视图[重复]的主要内容,如果未能解决你的问题,请参考以下文章

通过动态创建的按钮删除动态创建的 ViewGroup

使用javascript单击div内的x按钮动态添加和删除div [重复]

需要在按钮单击时隐藏/取消隐藏动态创建的下拉列表

删除动态创建的 UIButton 子视图

动态地将id分配给在kotlin中单击按钮时创建的edittext [重复]

如何从动态创建的表格视图单元格的输入字段中将数据检索到数组