【问题标题】:Remove view from screen iOS从屏幕 iOS 中删除视图
【发布时间】:2012-10-18 11:53:14
【问题描述】:

我有这样的架构:

----- main view    
       |
        ---right bar view
             |
              ----- Navigation Controller view
                     |
                     ------tableView Controller

当我在 tableViewController 上时,如何从窗口中删除右栏视图?

【问题讨论】:

    标签: objective-c ios uiview


    【解决方案1】:

    试试这个:

     [self.view.superview.superview removeFromSuperview];
    

    另一种更简洁的方法是使用通知:您可以向控制您的主视图的对象发送通知,以便它删除它的右栏子视图。它会是这样的:

    在您的主视图控制器中:

    [[NSNotificationCenter defaultCenter] addObserver:self
        selector:@selector(removeRightBar:) 
        name:@"RemoveRightBarNotification"
        object:nil];
    
    
    - (void) receiveTestNotification:(NSNotification *) notification
    {
         <REMOVE SUBVIEW FROM mainView>
    }
    

    在您的表格视图控制器中:

    [[NSNotificationCenter defaultCenter] 
        postNotificationName:@"RemoveRightBarNotification" 
        object:self];
    

    在这种情况下,通知将在主视图和表格视图控制器之间提供非常松散的连接。

    【讨论】:

    • 如果我没有正确理解您的问题,也许需要更多细节......“删除右侧栏视图”是什么意思?你想做什么?
    • 我有主屏幕和右侧的帮助栏我想在点击按钮时删除该帮助栏!
    • 实际工作需要一些自定义 [self.view.superview.superview.superview.superview removeFromSuperview];但这不是那么漂亮
    • @Filippos Zampounis:请查看我的编辑以了解更优雅的方式。
    【解决方案2】:

    对要删除的视图使用标签,并使用该标签的引用移除视图。
    喜欢:
    在将 Right Bar View 添加到主视图(self.view)之前添加一个标签

    rightBarView.tag   =   1;
    

    并为删除特定视图写入

    for(UIView *temp in [self.view subviews]) {
        if (temp.tag == 1) {
            [temp removeFromSuperview];
        }
    }
    

    希望这会有所帮助。

    【讨论】:

    • 这就是我尝试过但没有用的,所以我不得不在 for 循环之前添加类似的东西 stackoverflow.com/questions/3843411/…
    • 非常感谢非常好的解决方案,但很难在屏幕上找到视图 self.view 并没有太大帮助!
    猜你喜欢
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 2018-06-06
    • 2021-04-26
    • 1970-01-01
    相关资源
    最近更新 更多