由于某种原因,整天都在苦苦挣扎,希望有人可以对此有所了解。
我已经设置了CCLabelTTF
并为其添加了触摸处理程序,在触摸端我想在UIReferenceLibraryViewController
中查找该标签的字符串值。这是我的尝试(我的游戏处于横向模式,这就是我尝试90度旋转的原因):
if(NSClassFromString(@"UIReferenceLibraryViewController")) {
if ([UIReferenceLibraryViewController dictionaryHasDefinitionForTerm:word.Value] == YES)
{
UIReferenceLibraryViewController *reference =
[[UIReferenceLibraryViewController alloc] initWithTerm:word.Value];
reference.view.center = CGPointMake(winSize.width/2, winSize.height/2);
reference.view.transform = CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(90.0f));
[[[CCDirector sharedDirector] view] addSubview:reference.view];
}
}
这种类型的有效。我点击我的标签,显示UIReferenceLibraryViewController
(虽然由于某种原因它没有在横向上旋转),我的定义显示出来。然而,当我点击UIReferenceLibraryViewController
中的“完成”按钮时,我的应用程序崩溃了EXEC_BAD_ACCESS。图我在这里遗漏了一些明显的东西,但不确定是什么。
当然,任何帮助都是适用的。
感谢
穆斯塔法
答案 0 :(得分:0)
我有类似的问题。就我而言,我在我班级的方法中声明并实例化UIReferenceLibraryViewController
对象。选择“完成”按钮时收到错误,因为我的UIReferenceLibraryViewController
对象在此时不再存在。
为了解决这个问题,我在类接口中创建了一个成员变量:
UIReferenceLibraryViewController *reference;
然后我用retain创建了一个属性:
@property (retain) UIReferenceLibraryViewController *reference;
在我想要提供字典屏幕的方法中,确实使用了以下内容:
reference = [[UIReferenceLibraryViewController alloc] initWithTerm:cell.textLabel.text];
[[[CCDirector sharedDirector] openGLView] addSubview:reference.view];
然后我在dealloc方法中释放了引用对象。 不幸的是,它不再崩溃,但“完成”按钮现在什么也没做。
其他信息: 最终我的应用程序正在运行。我的应用程序在CCScene上添加了一个UITableView,允许用户单击一个表格视图单元格,以查找单元格中单词的定义。
为了实现这一目标,我做了以下工作: 在我的CCScene类(Game.m)中,我创建了一个UITableView。然后我创建一个UITableViewController类并设置UITableView dataSource并委托给那个新类。
myTableView.dataSource = myWordListViewController;
myTableView.delegate = myWordListViewController;
然后我将UITableView添加为CCScene的子视图,如下所示;
[[[CCDirector sharedDirector] openGLView] addSubview:myTableView];
CCScene类有一个成员变量(称为委托),它是我的AppDelegate类的一个实例。 AppDelegate类有一个成员变量,它是RootViewController的一个实例。
RootViewController *viewController;
所以,现在我向用户展示了一个UITableView(在CCScene之上)。此表视图包含单词列表。我现在需要确保表格视图单元格在单击时显示字典定义。
在MyWordListViewController(UITableViewController)中,我确保存在允许此类充当数据源并为我的表视图委派的方法。
<UITableViewDelegate, UITableViewDataSource>
此外,当用户单击UITableView中的单元格(即CCSCENE的子视图)时,我希望字典显示在表格视图的顶部。
我正在响应用户点击MyWordListViewController的didSelectRowAtIndexPath方法。由于我将表视图添加为CCScene(Game.m)的子视图,因此我需要使用我的CCScene所依赖的AppDelegate RootViewController。
为此,我向MyWordListViewController添加了一个成员变量,该变量包含AppDelegate类的实例。
delegate = (AppDelegate*) [[UIApplication sharedApplication] delegate];
现在在MyWordListViewController的didSelectRowAtIndexPath方法中,我可以依靠AppDelegate类中的RootViewController变量在表视图上显示字典。
reference = [[UIReferenceLibraryViewController alloc] initWithTerm:cell.textLabel.text];
[delegate.viewController presentModalViewController:reference animated:YES];
它可能不是最有说服力的解决方案,但它有效。