我正在编写用户必须进入其国家/地区的注册表单。我通过UITableView(Classe ViewController)中的.plist文件列出了这些国家/地区。另外,我使用复选标记设置单个选择。选择国家后,APP必须返回并在国家/地区标签中显示所选行(如正常的注册表格)。
这里是didSelectRowAtIndePath:
下的内容 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
// Uncheck the previous checked row
if(self.checkedIndexPath)
{
UITableViewCell* uncheckCell = [tableView
cellForRowAtIndexPath:self.checkedIndexPath];
uncheckCell.accessoryType = UITableViewCellAccessoryNone;
}
if([self.checkedIndexPath isEqual:indexPath])
{
self.checkedIndexPath = nil;
}
else
{
UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
self.checkedIndexPath = indexPath;
}
感谢您的帮助。
理查德
答案 0 :(得分:0)
只需像这样添加该行
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
country.text=uncheckCell.label.text;//add this wherever you want, but it should be in this method only
}
其中country是您创建的标签。
此外,只有当您的国家/地区和您选择行的表格位于同一个班级时,此行代码才有效,您能否提及如何使您的班级与UITableView
所在的位置相同?你的UILabel
是?
答案 1 :(得分:0)
如果你的标签和你的桌子在同一个控制器中,你可以这样做:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[self.yourLabel setText:[self.arrayCountries objectAtIndex:indexPath.row]];
}
但是如果你的桌子和你的标签在不同的控制器中,你可以使用NSUserDefaults来保持你的选择:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[[NSUserDefaults standardUserDefaults]setObject:[self.arrayCountries objectAtIndex:indexPath.row] forKey:@"selectedCountry"];
}
并在您的控制器中,您的标签获得此选择
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.labelCountry setText:[[NSUserDefaults standardUserDefaults] objectForKey:@"selectedCountry"]];
}
答案 2 :(得分:0)
据我了解,您应该使用delegates
。选择国家/地区后,以先前的形式调用委托函数并设置单元格文本的值。
if(self.checkedIndexPath)
{
UITableViewCell* uncheckCell = [tableView cellForRowAtIndexPath:self.checkedIndexPath];
uncheckCell.accessoryType = UITableViewCellAccessoryNone;
}
if([self.checkedIndexPath isEqual:indexPath])
{
self.checkedIndexPath = nil;
}
else
{
UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
self.checkedIndexPath = indexPath;
// Trigger previous form to get the current form's data
// Here self.delegate takes address of previous form
[self.delegate setThisCountryNameToOwnerFormWithText:cell.titleLabel.text];
// Probably go back like this
// [self.navigationController popViewControllerAnimated:YES];
}