0

由于某种原因整天都在为此苦苦挣扎,希望有人能对此有所了解。

我已经为它设置了一个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 而崩溃。图我在这里遗漏了一些明显的东西,但不确定是什么。

当然,任何帮助都会受到赞赏。

谢谢
穆斯塔法

4

1 回答 1

0

我有一个类似的问题。就我而言,我UIReferenceLibraryViewController在我的类的方法中声明和实例化对象。我在选择“完成”按钮时收到错误消息,因为那时我的UIReferenceLibraryViewController对象不再存在。为了解决这个问题,我在类接口中创建了一个成员变量:

UIReferenceLibraryViewController *reference;

然后我创建了一个带有保留的属性:

@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 数据源并委托给那个新类。

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];

它可能不是最有说服力的解决方案,但它确实有效。

于 2012-10-04T22:04:26.720 回答