首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用NSStackView和NSMutableArray填充NSArray

用NSStackView和NSMutableArray填充NSArray
EN

Stack Overflow用户
提问于 2017-03-07 14:36:52
回答 1查看 127关注 0票数 0

我有一堆视图要填充。

代码语言:javascript
复制
_countViewArray = [[NSArray alloc] init];
_countViewArray = @[self.a.view,self.b.view,self.c.view];
_stackView = [NSStackView stackViewWithViews:_countViewArray];

工作得很好。如果我想用可变数组替换这个数组,怎么做呢?

我尝试为“动态”堆栈视图编写这段代码,并最终在简单数组中转换可变数组,但没有工作:

代码语言:javascript
复制
_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];

在总括中,如果我打印可变数组,我有:

代码语言:javascript
复制
(
    (
    "<NSView: 0x600000121ea0>"
),
    (
    "<NSView: 0x600000120780>"
,
    (
    "<NSView: 0x6000001235a0>"
)
)

我该怎么解决呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-07 14:54:56

问题在于您正在添加数组(包含单个视图),而不是视图.

记住,@[x]是一个定义包含xNSArray的文字表达式。

所以像这样的一行:

代码语言:javascript
复制
[_mutableCountViewArray addObject:@[self.a.view]];

应成为:

代码语言:javascript
复制
[_mutableCountViewArray addObject:self.a.view];

(当然,这适用于您在后面几行中添加的每个对象.)

此外,作为一名副手:

代码语言:javascript
复制
_countViewArray = [[NSArray alloc] init];

在第一个片段中是多余的,因为您在下一行中重新分配了一个值.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42651014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档