我有一堆视图要填充。
_countViewArray = [[NSArray alloc] init];
_countViewArray = @[self.a.view,self.b.view,self.c.view];
_stackView = [NSStackView stackViewWithViews:_countViewArray];工作得很好。如果我想用可变数组替换这个数组,怎么做呢?
我尝试为“动态”堆栈视图编写这段代码,并最终在简单数组中转换可变数组,但没有工作:
_mutableCountViewArray = [[NSMutableArray alloc] init];
[_mutableCountViewArray addObject:@[self.a.view]];
if (caseCondition){
[_mutableCountViewArray addObject:@[self.b.view]];
}
[_mutableCountViewArray addObject:@[self.c.view]];
_countViewArray = [_mutableCountViewArray copy];
_stackView = [NSStackView stackViewWithViews:_countViewArray];在总括中,如果我打印可变数组,我有:
(
(
"<NSView: 0x600000121ea0>"
),
(
"<NSView: 0x600000120780>"
,
(
"<NSView: 0x6000001235a0>"
)
)我该怎么解决呢?
发布于 2017-03-07 14:54:56
问题在于您正在添加数组(包含单个视图),而不是视图.
记住,@[x]是一个定义包含x的NSArray的文字表达式。
所以像这样的一行:
[_mutableCountViewArray addObject:@[self.a.view]];应成为:
[_mutableCountViewArray addObject:self.a.view];(当然,这适用于您在后面几行中添加的每个对象.)
此外,作为一名副手:
_countViewArray = [[NSArray alloc] init];在第一个片段中是多余的,因为您在下一行中重新分配了一个值.
https://stackoverflow.com/questions/42651014
复制相似问题