【发布时间】:2014-08-01 15:55:06
【问题描述】:
情况:
3个视图控制器,白色为主,红色和蓝色嵌入(容器视图控制器)
我选择红色的东西,它切换到蓝色,我滑动蓝色 - 它返回,我想将标签中的文本更改为一些自定义文本
序列:
所以我使用委托,它也有效。但是当我尝试通过self.thisLabel.text 设置标签的文本属性(在确认我的协议的方法中)时,NSLog 说这个标签是 nil,尽管我有一个出口。如果我使用 [self.view viewWithTag:tag] NSLog 之类的东西,显示标签在那里,但我无法设置文本,它保持不变。
白色代码:
标题
@interface ContactsViewController : UIViewController <BlueViewControllerDelegate>
实现
- (void)adjustLabel:(NSString *)string{
NSLog(@"i am here baby %@",self.thisLabel);
[[self.view viewWithTag:57] setValue:string forKey:@"text"];
}
蓝色代码:
标题:
@protocol BlueViewControllerDelegate <NSObject>
-(void)adjustLabel:(NSString*)string;
@end
和:
@property id<ViewControllerDelegate> delegate;
实现
- (void)viewDidLoad{
[super viewDidLoad];
UIStoryboard *sB = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
WhiteViewController *WhiteVc = [sB instantiateViewControllerWithIdentifier:@"whiteID"];
self.delegate = WhiteVc;
}
-(void)willMoveToParentViewController:(UIViewController *)parent{
[self.delegate adjustLabel:@"some custom text"];
}
-(IBAction)swipePerformed:(UISwipeGestureRecognizer*)sender{
[self willMoveToParentViewController:nil];
[self.view removeFromSuperview];
[self removeFromParentViewController];
}
有什么想法吗?
【问题讨论】:
标签: objective-c xcode properties uilabel ioc-container