私はtableviewを含むビューを持っています。(私はこのビューをEquationViewとそのコントローラ、EquationViewControllerと呼んでいます)。テーブルビューのセルは、変数とその値を受容的に表すラベルとテキストフィールドを持つカスタムセルです。私はテキストフィールドで編集が始まると、自分のカスタムキーボードを手に入れることができました。カスタムuitableviewセルの入力のためのカスタムキーボード
しかし、正しいセルでキーストロークを得ることができませんでした。実際に編集しているテキストフィールドを持つセルのindexPathをどのように送信するのか分かりませんでした。カスタムキーボードコントローラクラス。私は、私のカスタムキーボードコントローラクラスにEquationViewController.hファイルを含め、indexviewを指定された行に手動で設定することによって、tableviewのtextFieldsのテキストを変更することができました。ここでは、キーボードのクラス定義は次のとおりです。これは私がインデックスパスに設定された方の行に表示される単語「test」を取得
-(IBAction)buttonPressed:(id)sender{
VariableCell *cell = (VariableCell *)[equationDetailViewController.myTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
cell.variableValue.text = @"test";
}
:
#import <UIKit/UIKit.h>
#import "EquationViewController.h"
@interface CustomNumberPadViewController : UIViewController {
EquationViewController *equationViewController;
}
@property (nonatomic, retain) EquationViewController *equationViewController;
-(IBAction)buttonPressed:(id)sender;
@end
私のアクションメソッドは、この(今のところ)のように見えます。
私は、カスタムキーボードコントローラークラスのactionメソッドにtextFieldが編集されているセルのindexPathを渡したり取得したりする方法があるのでしょうか?
あなたの権利は、道のりでした。私はIBで代議員を接続することを忘れていました。私はEquationViewControllerの中で変数(selectedTextfieldRow)を宣言しました。次に、テーブルビューにある行に従って、各フィールドにタグを割り当てました。次に、textFieldDidBeginで、selectedTextfieldRow変数にタグ番号を割り当てます。次に、キーボードコントローラ内のアクションメソッドでselectedTextfieldRowの値を取得し、選択したセルを呼び出す際にインデックスパスの行として使用します。それはまるでラウンドのようですが、それは動作します。ご協力いただきありがとうございます! – Jbryson
UITextFieldは、タグを使用する代わりに直接ivarに格納することもできます。 indexPathが必要な場合は、スーパービューを上に移動してセルを見つけてください(たとえば、textFieldがUITableViewCellのcontentViewにある場合はtextField.superview.superview)、UITableViewの 'indexPathForCell'を使用してindexPathを取得します。しかし、それはあなたのニーズに応じてあなた次第です – AliSoftware