【问题标题】:label property is nil,container view标签属性为零,容器视图
【发布时间】: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


    【解决方案1】:

    如果我正确理解您的 VC 层次结构,WhiteViewControllerBlueViewController 的父级,因此您不应该从 viewDidLoad 的情节提要中实例化一个新的,而是这样做:

    WhiteViewController *whiteVc = (WhiteViewController*)self.parentViewController;
    self.delegate = whiteVC;
    

    另外,我认为覆盖 willMoveToParentViewController 并不是特别有用。您可以将您的委托调用放在您的滑动操作中。

    【讨论】:

    • 白色视图控制器是独立的。相反,红色(容器视图控制器)和蓝色(其子视图)之间存在关系
    • @efimovD 白色 VC 是您应用的根(初始)视图控制器吗?
    • @efimovD 好的,您可以通过以下方式获得它:WhiteViewController *whiteVC =(WhiteViewController *)[[(YourAppDelegate *) [[UIApplication sharedApplication]delegate] window] rootViewController]
    • 100% 正确,问题是我每次都实例化新的白色控制器,但我需要引用现有的白色控制器。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 2013-06-10
    相关资源
    最近更新 更多