0

因此,我已经看到了与此类似的先前问题,但它们没有帮助。我也阅读了 Apple 的文档,但我不明白我哪里出错了。AFAIK 我做的一切都是合乎逻辑的,但是当我点击 UItoolbar 覆盖层上的完成按钮时,可以按下按钮但它没有做任何事情。这显然意味着它无法确认编写的代码。但是怎么做?

当在我的 UIToolBar 上单击完成按钮时,我想调出“TableViewController”的 .nib。但是下面的内容不允许单击以显示新视图。我该如何纠正这个问题?请告诉我哪里出了问题,应该更换什么以及为什么。

-(void)doneButtonPressed {

TableViewController *UIView = [[TableViewController alloc]
initWithNibName:@"TableViewController" bundle:nil];
UIView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:UIView animated:YES];
[UIView release];

}
4

3 回答 3

1

哇,你这里发生了一些奇怪的事情。在您的第一行中,您正在正确地分配和启动TableViewController实例,但您并没有为该实例提供唯一的名称。你用另一个类的名字来命名它,这势必会引起问题。事实上,我很惊讶它没有出现错误。

请尝试以下操作:

TableViewController *tableView = [[TableViewController alloc]
initWithNibName:@"TableViewController" bundle:nil];
tableView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:tableView animated:YES];

现在,您的TableViewController实例有一个唯一的名称,该名称在该方法的其余部分中被引用。只是要清楚-UIView是另一个类名,因此不能用作对象实例的名称。

编辑:此外,请务必将按钮的选择器添加doneButtonPressed:到其视图控制器的 .h 文件中。此外,如果您愿意,您可以NSLog()在函数的开头抛出一个调用,以确保它没有(或者可能)被调用。

于 2012-07-29T06:43:33.720 回答
0

当按钮动作没有触发时要检查的是你有合适的选择器。如果您正确地遵循了选择器。确保您没有使用选择器

@selector(doneButtonPressed:)

它将寻找如下功能:-

- (void) doneButtonPressed:(id) sender

对于您的成员函数,您需要

@selector (doneButtonPressed)

调试器是你的朋友。从断点开始,以确保您的函数被调用。

如果您要进入该功能,那么接下来要检查的是 The Kraken 的答案。

于 2012-07-29T07:02:42.667 回答
0

使用类名作为变量名没有任何限制。尽管您应该更改它,因为它令人困惑并且不遵循 iOS 编码约定。

“可以按下按钮但不做任何事情”,选择器是否被调用?

-(void)doneButtonPressed

展示您如何创建 UIBarButtonItem 以验证您是否在 init 方法中提供了正确的选择器,或者您是否直接在界面构建器中连接了按钮(它看起来不像,因为您没有使用 (IBAction) 返回签名。

于 2012-07-29T11:23:00.850 回答