1

UITableviewのCustomCellにUITextFieldがあり、このUITableviewをMainviewのサブビューとして使用しています。MainViewにもある別のUITableviewがありますが、このUITableviewをMainViewのサブクラスとして使用しています。私の問題。

ここに画像の説明を入力してください

画像が示すように、UITableviewの上は私のサブクラスUITableviwであり、下はUITextFieldを持つCustomCellを持つ単一行のUITableviewです。サブクラスUITableviewのセルをクリックすると、UITableviewのCustomCellにあるUITextFieldテキストがクリアになります。

注:-質問をより簡単にするために、UITextfieldがメインビュー(UITableviewのCustomCellではない)にある場合に機能するコードがあります。これが私のコードです。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をdataSourcecellForRowAtIndexPathの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:

2つのテーブルを使用していて、一方のテーブルのテキストフィールドをクリアしてもう一方のテーブルを選択する場合は、一方のテーブルで選択したindexPathと、テキストフィールドを持つセルのindexPathをリンクするための何かが必要だと思います。次のようなものを使用している場合:

表1、摂氏の場合はindexpath:0,0。表1、華氏の場合はindexpath:0,1。表1、ケルビンのインデックスパス:0.2。

表2、摂氏の場合はindexpath:0,0。表2、華氏の場合はindexpath:0,1。表2、ケルビンのインデックスパス:0.2。

同じindexPathを使用して、次のような他のテーブルビュー(Inputtableview)からのテキストフィールドを持つセルを取得できます。

- (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 に答える