2014-02-17 41 views
2

我有一个拥有代表的类A。代表们正在实施另一类B在委托方法中进行更改时未查看更改

B我有一个文本字段,我试图隐藏代理被调用时。

- (void) didRecieveResponseDelegate : (BOOL) status{ 
     textField.hidden = YES; 
} 

但textField不会隐藏。我注意到代理内部没有任何与视图相关的更改,包括删除子视图控制器。有什么问题,我该如何解决?

编辑:B是另一个视图控制器

+2

您是否添加了a.delegate = self;在B班?你可以添加日志到didRecieveResponseDelegate:确保这个方法被调用? – Greg

+0

您是否检查过didrecieveResponseDelegate方法调用或不是 – codercat

+0

是的,我确定调用了委托。所有日志都在委托内部工作。但我无法删除任何视图或更改元素的可见性 – user2810114

回答

0

试试这个的子视图控制器,

- (void) didRecieveResponseDelegate : (BOOL) status{ 

    dispatch_async(dispatch_get_main_queue(), ^{ 
      textField.hidden = YES; 
    }); 
} 
+0

没有帮助:( – user2810114

0
  1. 请问方法被调用? (断点或NSLog来证明它)。
  2. 你为什么使用具有前导下划线的实例变量?这会导致错误和混淆以及代码中的不信任。
  3. 是textField实际设置还是零? NSLog来证明它。
  4. 修复方法名称中的拼写错误。很有可能didReceiveResponseDelegate被调用而不是didRecieveResponseDelegate。
  5. 确保您不会从后台线程进行UI调用。
+0

你说的一切都是检查并且没问题。这里唯一需要注意的是B是另一个控制器的子视图控制器,如果有帮助的话 – user2810114