1

我在 UITableview 的 CustomCell 中有一个 UITextField,我使用这个 UITableview 作为 Mainview 的子视图。还有另一个 UITableview 也在我的 MainView 上,但我使用这个 UITableview 作为我的 MainView 的子类。下面的图像也将是 hlepfull 理解我的问题。

在此处输入图像描述

如图所示,UITableview 上面是我的子类 UITableviw,下面是单行 UITableview,CustomCell 具有 UITextField。现在我希望当我单击子类 UITableview 的任何单元格时,我的 UITextField 文本是清晰的,我在 UITableview 的 CustomCell 中拥有。

注意:-为了让我的问题更简单,当我在 MainView 上(不在 UITableview 的 CustomCell 中)有 UITextfield 时,我有一些代码对我有用。这是我的代码。在 Mainview.h 文件中

#import <UIKit/UIKit.h>
#import "Inputtableview.h"
@interface testingViewController : UIViewController<UITextFieldDelegate,UITableViewDelegate,UITableViewDataSource> {
IBOutlet UITextField *txtfinput;
Inputtableview *inputview;
IBOutlet UITableView *inputtbl; 
}
@property (nonatomic, retain) UITextField *txtfinput;
@end

然后在 Mainview.m 文件的 ViewDidload

- (void)viewDidLoad {
if (inputview == nil) {
    inputview = [[Inputtableview alloc] init];
}
[inputtbl setDataSource:inputview];
[inputtbl setDelegate:inputview];
    inputview.view = inputview.tableView;
    inputview.myAccessToMaintxtf = txtfinput;
[super viewDidLoad];
}

现在在我的 UITableview.h 文件的子类中

#import <UIKit/UIKit.h>
@interface Inputtableview : UITableViewController<UITableViewDelegate,UITableViewDataSource> {
}
@property (nonatomic, assign) UITextField *myAccessToMaintxtf;
@end

最后在我的子类 UITableview.m 文件中

@implementation Inputtableview
@synthesize myAccessToMaintxtf; 


#pragma mark -
#pragma mark Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
 myAccessToMaintxtf.text=@"";
 }

正如我之前提到的,当我的 MainView 中有 TextField 时,上面的代码可以正常工作,但是当我想清除 UITableview 的 CustomCell 中的 UITextField 的文本时,我不知道如何修复它。任何帮助都将得到应用。提前感谢。

4

2 回答 2

1

您是否将 myAccessToMaintxtf 添加为 dataSource cellForRowAtIndexPath 中 UITableViewCell 的子视图?如果你这样做了,你仍然需要使用 [tableView reloadCellAtIndexPath:...] 重新加载单元格;

或者另一个建议是将 UITableViewCell 子类化,并添加一个 Outlet 属性,将插座连接到 TextField。然后你可以做类似 selectedCell.textField.text = @""; 在你 didSelectRowAtIndexPath 中。

于 2012-11-13T12:35:29.943 回答
1

好的,我看不到您如何将“myAccessToMaintxtf”连接到 CustomCell 中的文本字段。我用来从我的自定义单元格中获取子视图的是“标签”。标签可以用作子视图的标识符。因此,如果您使用的是 xib,则可以在文本字段的设置选项卡中设置标签,如果您通过代码创建文本字段,则可以将标签设置为:

 myAccessToMaintxtf.tag = 11; //11 is and example number, use the number that you want

然后,当您想访问您的文本字段时,请使用:

theTextFieldToClear = (UITextField*)[theCellWithTheTextFieldToClear viewWithTag:11];

您可以在 UIView 类参考中找到有关标签的更多信息:http: //developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html

祝你好运

编辑2:

如果您使用两个表格,并且您想清除一个表格中的文本字段,选择另一个表格,我认为您需要一些东西来在一个表格中选择的 indexPath 和带有文本字段的单元格的 indexPath 之间建立链接。如果您正在使用类似的东西:

表 1,indexpath:0,0 为摄氏度;表 1,indexpath:0,1 为华氏温度;表 1,开尔文的 indexpath:0,2;

表 2,indexpath:0,0 为摄氏度;表 2,indexpath:0,1 for farenheit;表 2,开尔文的 indexpath:0,2;

您只需使用相同的 indexPath 从其他表视图(输入表视图)获取带有文本字段的单元格,例如:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
    UITableViewCell *cellWithTheFieldToClear = [yourInputTableView cellForRowAtIndexPath:indexPath];
    theTextFieldToClear = (UITextField*)[theCellWithTheTextFieldToClear viewWithTag:2];
    theTextFieldToClear.text = @"";
}
于 2012-11-13T12:43:49.677 回答