如何引用 iOS UITextFields
Posted
技术标签:
【中文标题】如何引用 iOS UITextFields【英文标题】:How to reference iOS UITextFields 【发布时间】:2012-01-02 04:31:04 【问题描述】:我正在创建一个填字游戏类型的应用程序,并使用以下代码制作网格:
- (void) viewDidLoad
[...]
//we are inside 2 loops (puzzleRow and i), 15 rows (puzzleRow), 15 cols (i)...
UITextField *inputBox = [[UITextField alloc] initWithFrame:letterFrame];
key = (puzzleRow * 100) + i;
[inputBox setTag:key];
[....]
稍后,我想引用UITextField
并获取它们的值,将其与正确答案进行检查等。
- (IBAction)checkSolutionButton:(id)sender
int i = 1;
for (id obj in self.Puzzle)
int len = [obj length];
for(int j = 0; j < len; j++)
NSRange range = NSMakeRange(j, 1);
NSString *answer = [obj substringWithRange:range];
int key = (i * 100) + j;
UIView *userGuessSquare = [self.view viewWithTag:key];
UITextField *userGuessTextField = [userGuessSquare viewWithTag:key];
NSString *guess = userGuessTextField.text;
NSLog(@"guess: %@", guess);
self.Puzzle 是一个NSArray
字符串 (ANSWER1..ANSWER2,ANSWER3..ANSWER4),构成填字游戏的行,点是黑色方块。 UIView
是UITextField
的持有者,每个UIView
及其UITextField
都有一个相同的密钥。
我在这里卡住了。我收到警告Incompatible pointer types initializing UITextField with an expression type UIView
我以为它是一个子类?
NSString *guess = userGuessTextField.text;
是不行的。
问题:
我怎样才能制作一堆UITextField
(s),然后再访问它们和它们的值?
(已编辑以包含整个 IBAction
方法)。
【问题讨论】:
如果您确定从viewWithTag:
返回的视图将始终为UITextField
,那么您可以将其显式转换为UITextField
类以使警告静音。
【参考方案1】:
使用标签应该没问题。要获得 UITextField 你应该这样做:
UITextField *userGuessTextField = (UITextField*) [self.view viewWithTag:key];
NSString *guess = userGuessTextField.text;
这会将 UIView 转换为更具体的 UITextField,这没关系,因为您知道您已经使用过它。确保您的标签也从 0 以上开始。
【讨论】:
谢谢。这行得通。最有用的部分是如何施放,实际上,这让我很生气。以上是关于如何引用 iOS UITextFields的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Sanity.io 的 inputComponent 中检索引用的字段数据?
SVGKit:如何使用 SVGKit 渲染引用 iOS 设备照片的 SVG XML 字符串