我即将在我的应用中设置一些约束。当我尝试制作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]];
答案 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?