从 UICollectionViewCell 转为失败?
Posted
技术标签:
【中文标题】从 UICollectionViewCell 转为失败?【英文标题】:Segue from UICollectionViewCell failing? 【发布时间】:2014-12-24 16:15:59 【问题描述】:我有一个UICollectionView
:
class BoatMatchingGame: UICollectionViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource
我也有一个不同的ViewController
的课程,我正在尝试继续:
class GameOutcome: UIViewController
@IBOutlet var gameOutcomeLabel: UILabel!
var boatMatchingGame: BoatMatchingGame!
override func viewDidLoad()
super.viewDidLoad()
gameOutcomeLabel.text = gameOutcomeText
在BoatMatchingGame
类中,我有prepareForSegue
方法:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
let gameOutcome = segue.destinationViewController as GameOutcome
gameOutcome.boatMatchingGame = self;
didSelectItemAtIndexPath
方法中,我要执行segue
:
switch indexPath.item
case 14:
self.performSegueWithIdentifier("Quit Matching Game", sender: self)
我在情节提要中设置了标识符"Quit Matching Game"
。当我运行程序并在indexPath
14 处选择cell
时,出现以下错误:Thread 1: EXC_BREAKPOINT (code=EXC_1386_BPT, subcode=0x0)
on this line in a thread: 0x202ebd8: popl %ebp
注意:我确实有一个标签在这个单元格中每秒都在变化。
谢谢!
这是整个线程:
libswiftCore.dylib`swift_dynamicCastClassUnconditional:
0x2080ba0: pushl %ebp
0x2080ba1: movl %esp, %ebp
0x2080ba3: movl 0x8(%ebp), %eax
0x2080ba6: testl %eax, %eax
0x2080ba8: je 0x2080bbb ; swift_dynamicCastClassUnconditional + 27
0x2080baa: movl 0xc(%ebp), %ecx
0x2080bad: movl (%eax), %edx
0x2080baf: nop
0x2080bb0: cmpl %ecx, %edx
0x2080bb2: je 0x2080bd8 ; swift_dynamicCastClassUnconditional + 56
0x2080bb4: movl 0x4(%edx), %edx
0x2080bb7: testl %edx, %edx
0x2080bb9: jne 0x2080bb0 ; swift_dynamicCastClassUnconditional + 16
0x2080bbb: calll 0x2080bc0 ; swift_dynamicCastClassUnconditional + 32
0x2080bc0: popl %eax
0x2080bc1: leal 0x38262(%eax), %ecx
0x2080bc7: movl 0x7748c(%eax), %eax
0x2080bcd: movl %ecx, 0x8(%eax)
0x2080bd0: movl $0x0, 0xc(%eax)
0x2080bd7: int3
0x2080bd8: popl %ebp
0x2080bd9: retl
0x2080bda: nopw (%eax,%eax)
【问题讨论】:
@vacawama 我将 segue 从BoatMatchingGame
ViewController 拖到情节提要中的 GameOutcome
ViewController。
【参考方案1】:
您似乎还没有真正声明或初始化您在GameOutcome
的viewDidLoad
中使用的gameOutcomeText
变量。
如果您在BoatMatchingGame
类中设置gameOutcomeText
,则可以使用传递给GameOutcome
视图控制器的BoatMatchingGame
实例来访问它,如下所示:
override func viewDidLoad()
super.viewDidLoad()
gameOutcomeLabel.text = boatMatchingGame.gameOutcomeText
【讨论】:
对不起;我忘了提到gameOutcomeText
存储为public var
。我尝试将它移到类中并使用此方法,但仍然出现相同的错误。以上是关于从 UICollectionViewCell 转为失败?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 UICollectionViewCell 呈现 AlertView
从 uiviewcontroller 操作 uicollectionviewcell 内的 uicollectionview
为啥我的 UICollectionViewCell 没有从 UICollectionViewController 获取数据?
从 XIB 加载时 UICollectionViewCell 导致崩溃