错误告诉我在尝试制作NSDictionary时我的textview是nil

时间:2015-03-02 00:47:54

标签: ios objective-c xcode constraints nsdictionary

我即将在我的应用中设置一些约束。当我尝试制作NSDictionary时,我收到的错误告诉我UITextView为零。正如你所看到的,我为UITextView设置了一些偏好,所以我认为它不是零。但是,如果它是零,我怎么做它不是零?

我也尝试了NSDictionaryOfVariableBindings,没有任何运气。

感谢。

    UIView *infoView = [[UIView alloc] viewWithTag:1];
    infoView.backgroundColor = [UIColor blackColor];
    infoView.translatesAutoresizingMaskIntoConstraints = NO;
    [displayView addSubview:infoView];

    NSDictionary *views = @{@"infoView" : infoView};

    [displayView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[infoView]|"
                                                                    options:0
                                                                    metrics:nil
                                                                    views:views]];
    [displayView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[infoView]|"
                                                                    options:0
                                                                    metrics:nil
                                                                    views:views]];

1 个答案:

答案 0 :(得分:1)

你所犯的错误是viewWithTag:没有实例化新的UIView,它只是搜索现有的UIView的层次结构,寻找另一个将其作为标记值的UIView。更多文档:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/occ/instm/UIView/viewWithTag

您需要做的是首先实例化您的UIView,然后设置其标记:

UIView *infoView = [[UIView alloc] init];
infoView.tag = 1;

另外,作为一个侧面点,尽管可能令人惊讶,但在nil上设置属性(以及调用方法或发送消息)在objective-c中完全有效,并且您不能将其视为测试对象不是。这里有更多讨论:Sending a message to nil?