【发布时间】:2020-06-10 18:10:18
【问题描述】:
这类问题有问有答,但我的具体情况返回一个空数组。我首先在 View Controller 1 (VC1) 中创建了一个数组。 VC1 包括一个集合视图。我尝试将 UIView 添加到 cellForItem func 中的数组。
/// A subclass of `UIViewController` with a `MessagesCollectionView` object
/// that is used to display conversation interfaces.
open class MessagesViewController: UIViewController,
UICollectionViewDelegateFlowLayout, UICollectionViewDataSource {
public var cellViewArray = NSMutableArray()
open func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = messagesCollectionView.dequeueReusableCell(TextMessageCell.self, for: indexPath)
cell.configure(with: message, at: indexPath, and: messagesCollectionView)
let cellView = cell.contentView
//print("cellView = \(cellView)")
messageViewArray.insert(cellView, at: indexPath.row)
//print("messageViewArray = \(String(describing: messageViewArray))")
return cell
}
我在调试中确认,当集合视图运行时,它确实将 cellView 保存到 messageViewArray 并且两者都不是 nil。
messageViewArray = (
"<UIView: 0x142913720; frame = (0 0; 359 140); autoresize = W+H; gestureRecognizers = <NSArray: 0x142913d30>; layer = <CALayer: 0x1429138a0>>",
"<UIView: 0x14291bbc0; frame = (0 0; 359 256); autoresize = W+H; gestureRecognizers = <NSArray: 0x14291c1d0>; layer = <CALayer: 0x14291bd40>>",
"<UIView: 0x142929520; frame = (0 0; 359 256); autoresize = W+H; gestureRecognizers = <NSArray: 0x142929b30>; layer = <CALayer: 0x1429296a0>>",
"<UIView: 0x14298e610; frame = (0 0; 359 140); autoresize = W+H; gestureRecognizers = <NSArray: 0x14298ec20>; layer = <CALayer: 0x14298e790>>",
"<UIView: 0x142929520; frame = (0 0; 359 256); autoresize = W+H; gestureRecognizers =
)
在 View Controller 2 (VC2) 中,我尝试从 VC1 访问 messageViewArray 并对 UIView 对象执行一些操作。
let messagesViewController = MessagesViewController()
print("messagesViewController.messageViewArray = \(messagesViewController.integerViewArray.description)")
这将在调试中返回以下显示空数组。
messagesViewController.messageViewArray = (
)
为什么数组对象不保留在 VC2 中?我可以对 VC2 中的 messageViewArray 进行哪些更改。在此先感谢您的时间。
【问题讨论】:
-
你从VC1到VC2怎么样?执行 Segue 还是以编程方式执行?如果您可以添加该代码会有所帮助。
-
不是顺序。 VC1 嵌入在 VC2 中嵌入的视图控制器中。这是一个聊天应用程序,VC1 控制聊天对话。所以没有从 VC1 到 VC2 的直接链接。
-
VC1 和 VC2 之间必须有一种链接方式。你能张贴一张照片,说明这一切是如何构成的吗?它是如何嵌入的?
标签: ios swift view uiviewcontroller nsarray