Iphone UITableViewCell和UITableView的相互测试问题,有解决方案吗?
我有一个继承自Iphone UITableViewCell和UITableView的相互测试问题,有解决方案吗?,iphone,uitextfield,uitableview,Iphone,Uitextfield,Uitableview,我有一个继承自UITableViewController的类,这也是根类。此tableView包含三个自定义的UITableViewCells(从NIB文件加载而非子类),每个UITableViewCell都有一个UITextField。现在,当我实现委托方法时 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementStr
UITableViewController
的类,这也是根类。此tableView包含三个自定义的UITableViewCell
s(从NIB文件加载而非子类),每个UITableViewCell
都有一个UITextField
。现在,当我实现委托方法时
- (BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
我没有收到任何事件。这个函数从未被激发,我也尝试过实现其他委托方法,但都没有激发。如何激发这些委托方法
我还想为这些UITextField
s(属于UITableViewCell
的一部分)重写canperformation:sender:
函数如何执行此操作?文本字段:shouldChangeCharactersRange:replacementString:方法是
UITextFieldDelegate
协议的一部分,因此您必须为这些UITextField
设置一个委托
例如,如果在表视图控件代码中创建UITextField
s,并假设该方法在同一控件中实现,则可以执行以下操作:
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(x,y,w,h)];
[textField setDelegate:self];
但是,您说您正在从XIB文件加载UITableViewCell
s。您必须以某种方式从代码内部访问UITextField
s,并对其调用setDelegate:
方法。您可以使用UIView
的子视图
属性来完成此操作。例如:
UIViewController *controller = [[UIViewController alloc] initWithNibName:@"foo" bundle:nil];
UITextField *textField = (UITextField *)[[controller.view subviews] objectAtIndex:0];
虽然在代码中创建UITextField
s要简单得多,也更优雅,但IMHO
至于覆盖
canperformation:sender:
方法,您必须为UITextField
子类。文本字段:shouldchangeCharactersRange:replacementString:方法是UITextFieldDelegate
协议的一部分,因此您必须为这些UITextField
设置一个委托
例如,如果在表视图控件代码中创建UITextField
s,并假设该方法在同一控件中实现,则可以执行以下操作:
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(x,y,w,h)];
[textField setDelegate:self];
但是,您说您正在从XIB文件加载UITableViewCell
s。您必须以某种方式从代码内部访问UITextField
s,并对其调用setDelegate:
方法。您可以使用UIView
的子视图
属性来完成此操作。例如:
UIViewController *controller = [[UIViewController alloc] initWithNibName:@"foo" bundle:nil];
UITextField *textField = (UITextField *)[[controller.view subviews] objectAtIndex:0];
虽然在代码中创建UITextField
s要简单得多,也更优雅,但IMHO
至于覆盖
canPerformAction:sender:
方法,您必须为此子类UITextField
。这个类是UITextFieldDelegate吗?您需要提供更多信息、来源等。。。。
你没有得到任何事件的事实让我觉得问题在于NIB中缺少了一些东西。由于这个确切的原因,我不使用IB或NIB,调试问题变得非常困难。也许发布XML的这个类是UITextFieldDelegate吗?您需要提供更多信息、来源等。。。。
你没有得到任何事件的事实让我觉得问题在于NIB中缺少了一些东西。由于这个确切的原因,我不使用IB或NIB,调试问题变得非常困难。也许post您的XML的RootViewController是UITextFieldDelegate的代理,我无法在这里发布我的XML文件,因为它跨越了600个字符。如何上传xml文件?RootViewController是UITextFieldDelegate的代理,我无法在这里发布我的xml文件,因为它跨越了600个字符。如何上传xml文件?感谢Can Berk提供的提示,非常有用。如何找到要传入objectAtIndex的索引值?这里显示的是将值传递为0,它是否始终为0?因为我在tableviewcell、label、textfield和一个按钮上有3个控件。很抱歉,如果这是一个基本问题,但我对iphone编程还不熟悉。这取决于您添加子视图的顺序,但由于您要在XIB文件中添加子视图,我想您必须尝试0到2。正如我所说,在代码中而不是在Interface Builder中创建UITableViewCells是一种更好的做法。如果可以的话,试着这样做,这将是一个很好的锻炼。谢谢can Berk的提示,它真的很有帮助。如何找到要传入objectAtIndex的索引值?这里显示的是将值传递为0,它是否始终为0?因为我在tableviewcell、label、textfield和一个按钮上有3个控件。很抱歉,如果这是一个基本问题,但我对iphone编程还不熟悉。这取决于您添加子视图的顺序,但由于您要在XIB文件中添加子视图,我想您必须尝试0到2。正如我所说,在代码中而不是在Interface Builder中创建UITableViewCells是一种更好的做法。如果可以的话,试着这样做,这将是一个很好的锻炼。