Ios 从uibarbuttonite的新观点?

Ios 从uibarbuttonite的新观点?,ios,xcode,uibarbuttonitem,Ios,Xcode,Uibarbuttonitem,所以我以前见过类似的问题,但它们没有帮助。我也读过苹果公司的文档,但我不明白哪里出了问题。好吧,我做的每件事都是合乎逻辑的,但是当我点击UItoolbar覆盖图上的“完成”按钮时,可以按下该按钮,但它什么都不做。这显然意味着它无法确认编写的代码。但是怎么做呢 当单击UIToolBar上的“完成”按钮时,我想打开“TableViewController”的.nib。但下面的内容不允许单击打开新视图。我如何纠正这一点?请告诉我哪里出了问题,应该更换什么,为什么 -(void)doneButtonPr

所以我以前见过类似的问题,但它们没有帮助。我也读过苹果公司的文档,但我不明白哪里出了问题。好吧,我做的每件事都是合乎逻辑的,但是当我点击UItoolbar覆盖图上的“完成”按钮时,可以按下该按钮,但它什么都不做。这显然意味着它无法确认编写的代码。但是怎么做呢

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

-(void)doneButtonPressed {

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

}

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

请尝试以下操作:

TableViewController *tableView = [[TableViewController alloc]
initWithNibName:@"TableViewController" bundle:nil];
tableView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:tableView animated:YES];
现在,您的
TableViewController
实例有一个唯一的名称,该名称将在方法的其余部分中引用。需要明确的是--
UIView
是另一个类名,因此不能用作对象实例的名称


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

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

@selector(doneButtonPressed:)
这将查找如下函数:-

- (void) doneButtonPressed:(id) sender
对于您的成员功能,您需要

@selector (doneButtonPressed)
调试器是您在这里的朋友。从断点开始,以确保函数正在被调用


如果您要进入函数,那么接下来要检查的就是海怪的答案。

使用类名作为变量名没有任何限制。尽管你应该改变它,因为它令人困惑,而且不符合iOS编码惯例

“按钮可以按下,但不起任何作用”,选择器是否被调用

-(无效)Donebutton按下


演示如何创建UIBarButtonim,以验证您是否在init方法中提供了正确的选择器,或者您是否直接在interface builder中连接了按钮(由于您未使用(iAction),因此看起来与此不同)返回签名。

命名约定有助于避免此类错误,并使代码更具可读性。大写的名称表示类型,如类、枚举或typedef,以小写开头的名称通常是变量。所有的#defines都是大写的。幸运的家伙,我还是改成了这样,我承认我在命名实例时犯了一个错误ce错误,但这似乎不是错误的根源。我已将其更改为你们所说的内容,请查看我对user490696的响应,以了解我是如何创建按钮的。我不认为我犯了错误,因为“完成”按钮功能正常,并执行类似的操作(引号之间的整个代码):[自我解散ModalviewController:否],所以我使用的方法是错误的。如果我提到的代码行有效,那么我创建按钮的方式显然没有问题?我没有使用IB,所以我不必使用IBAction。我的BarButtonim是以编程方式创建的。uiBarButtonim*doneButton=[[uiBarButtonim alloc]initWithBarButtonSystemItem:UIBarButtonItemStyleDone目标:自我操作:@selector(doneButtonPressed)];是否调用选择器?不,不是。我放入其中的所有内容-(void)doneButtonPressed{..}就像什么都不放在里面一样。它只是无法识别代码,甚至在按下按钮时也不会崩溃。我在doneButtonPressed中实现的代码是错误的。我用不同的笔尖测试了它。按下时它也不会打开。知道正确的方法是什么吗?我使用了@selector(doneButtonPressed)。它工作正常,因为我将-(void)doneButtonPressed{……}中的所有内容替换为[self dismissModalViewControllerAnimated:NO];。当我单击“完成”按钮时,它会正常地解除当前视图控制器。因此它接收操作并确认代码。这只是我编写的方法(请参阅Kraken在其回复中的代码)那不能正常工作。