是iOS和Xcode的新手。我正在使用一个简单的计算器。我有一个表视图,其中我通过代码添加了30个textFields。我为他们分配了标签。
然后我为NumPad类型的textField制作了键盘。为此,我需要使用工具栏关闭键盘。
但是当我运行程序时,带有最后一个标签的textField会取消键盘,而其他标签则不会。我想当我在我的代码中提到textField时,它会分配最后一个标签的textField。
我的代码已经给出了。
for (int i = 0; i < 30; i++) {
mainTextField = [[UITextField alloc] initWithFrame:CGRectMake(20, (80 + (i * 60)), 280, 30)];
mainTextField.borderStyle = UITextBorderStyleRoundedRect;
mainTextField.textColor = [UIColor blackColor];
mainTextField.font = [UIFont systemFontOfSize:17.0];
mainTextField.backgroundColor = [UIColor whiteColor];
mainTextField.autocorrectionType = UITextAutocorrectionTypeNo;
mainTextField.backgroundColor = [UIColor clearColor];
mainTextField.keyboardType = UIKeyboardTypeNumberPad;
mainTextField.keyboardType=UIKeyboardTypeDecimalPad;
mainTextField.returnKeyType = UIReturnKeyDone;
mainTextField.tag= i+1;
mainTextField.delegate=self;
[self->mainTableView addSubview:mainTextField];
self. numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
self. numberToolbar.barStyle = UIBarStyleBlackOpaque;
self. numberToolbar.items = [NSArray arrayWithObjects:
[[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelNumberPad)],
[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
[[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad)],
nil];
[self.numberToolbar setTag:i+1];
[self.numberToolbar sizeToFit];
mainTextField.inputAccessoryView = numberToolbar;
mainTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
mainLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 55+(i*60), 280, 18)];
mainLabel.backgroundColor = [UIColor clearColor];
mainLabel.textAlignment = UITextAlignmentLeft;
mainLabel.tag= i+1;
{
switch ([mainLabel tag]) {
case 1:
mainLabel.text=[ passedValue objectAtIndex:0];
break;
case 2:
mainLabel.text=[ passedValue objectAtIndex:1];
break;
case 3:
mainLabel.text=[ passedValue objectAtIndex:2];
break;
case 4:
mainLabel.text=[ passedValue objectAtIndex:3];
break;
case 5:
mainLabel.text=[ passedValue objectAtIndex:4];
break;
case 6:
mainLabel.text=[ passedValue objectAtIndex:5];
break;
case 7:
mainLabel.text=[ passedValue objectAtIndex:6];
break;
case 8:
mainLabel.text=[ passedValue objectAtIndex:7];
break;
case 9:
mainLabel.text=[ passedValue objectAtIndex:8];
break;
case 10:
mainLabel.text=[ passedValue objectAtIndex:10];
break;
case 11:
mainLabel.text=[ passedValue objectAtIndex:11];
break;
case 12:
mainLabel.text=[ passedValue objectAtIndex:12];
break;
case 13:
mainLabel.text=[ passedValue objectAtIndex:13];
break;
case 14:
mainLabel.text=[ passedValue objectAtIndex:14];
break;
case 15:
mainLabel.text=[ passedValue objectAtIndex:15];
break;
case 16:
mainLabel.text=[ passedValue objectAtIndex:16];
break;
case 17:
mainLabel.text=[ passedValue objectAtIndex:17];
break;
case 18:
mainLabel.text=[ passedValue objectAtIndex:18];
break;
case 19:
mainLabel.text=[ passedValue objectAtIndex:19];
break;
case 20:
mainLabel.text=[ passedValue objectAtIndex:20];
break;
case 21:
mainLabel.text=[ passedValue objectAtIndex:21];
break;
case 22:
mainLabel.text=[ passedValue objectAtIndex:22];
break;
case 23:
mainLabel.text=[ passedValue objectAtIndex:23];
break;
case 24:
mainLabel.text=[ passedValue objectAtIndex:24];
break;
case 25:
mainLabel.text=[ passedValue objectAtIndex:25];
break;
case 26:
mainLabel.text=[ passedValue objectAtIndex:26];
break;
case 27:
mainLabel.text=[ passedValue objectAtIndex:27];
break;
case 28:
mainLabel.text=[ passedValue objectAtIndex:28];
break;
case 29:
mainLabel.text=[ passedValue objectAtIndex:29];
break;
default:
break;
}
[self->mainTableView addSubview:mainLabel];
[self configureView];
答案 0 :(得分:0)
此代码存在一些问题。
首先,不如何创建包含30个文本字段的表格。相反,您使用UITableView
,将其设置为delegate
和dataSource
到视图控制器并实现所需的方法。其中tableView:numberOfRowsInSection:
您将返回30.然后在tableView:cellForRowAtIndexPath:
中创建一个单元格,将一个文本字段放入其中并返回单元格。互联网上有很多关于如何设置这样的表格视图的教程,你也可以阅读Apple的文档。您几乎从不向tableView本身添加任何其他视图。
self->tableView
是错的。如果要取消引用指向结构的指针并访问或设置其中一个变量,则在C中使用->
表示法(以及其他)。您不要将它与Objective-C对象一起使用。只需写下self.tableView
即可。如果您正确地声明了您的财产,这应该有效。
不需要那个开关块。你为什么不这样做:
mainLabel.text = [passedValue objectAtIndex[mainLabel tag]-1];