使用UI表格视图,iOS 7
问题描述:
我在我的项目中有UI View Table
和Simple View
控制器。他们通过导航控制器相互连接。在UI View Table
的顶部,有一个按钮“添加新位置”,它将调用segue到Simple View
。后者具有必须由用户填写的文本字段。当用户点击“返回”按钮时,他/她必须用新添加的单元看到“更新的”UI表格视图。使用UI表格视图,iOS 7
为了在这些视图之间传递数据,我使用了singleton类(从我的角度来看,它非常适合MVC范例)。该对象具有NSMutableArray
作为在用户在Simple View
控制器上的文本字段完成键入时更新的属性。
但是,当我第一次启动应用程序时,请按添加新位置按钮,在文本字段处输入文本并返回 - 没有任何反应,即UI表不更新。
但是,当我再次重复相同的步骤时,两个(相同)单元格被添加到UI表视图中。
请问我可以如何解决这个问题,即当用户按下后退按钮时,只添加一个单元格到UI表格视图?
答
这是因为 - (IBAction)textFieldReturn:(id)发件人被触发两次。您必须将方法添加到viewWillDisappear中的数据:(BOOL)动画,并检查空值:
-(IBAction)textFieldReturn:(id)sender{
}
-(void)viewWillDisappear:(BOOL)animated {
if ([_textSearch.text length] == 0) return;
NSLog(@"%@", _textSearch.text);
_info.isEdited=YES;
_info=[GeoChatInformationAboutTheSelectedPlace returnInstance];
[_info.arrayOfTheNamesOfTheLocations addObject:_textSearch.text];
[_info.imagesOfTheSavedLocations addObject:@"car1.jpeg"];
[_info.arrayOfTheNumberOfUpdatesOfTheSavedLocations addObject:@"1"];
[_info.arrayOfTheOnLineUsersAtTheSavedLocations addObject:@"56"];
[_info.arrayOfThePostsAssociatedWithTheSelectedLocation addObject:@3];
}
答
您对重载的UITableView数据源在你的tableview视图控制器viewWillAppear:animated
方法:
- (void)viewDidLoad
{
[super viewDidLoad];
_info=[GeoChatInformationAboutTheSelectedPlace returnInstance];
//[self.tableView reloadData];
}
-(void)viewWillAppear:(BOOL)animated {
[self.tableView reloadData];
}
PS:car1.jpeg和car2.jpeg缺少在github上的项目
谢谢您的建议。我按照你的建议做了,但现在,当我第二次点击“添加新位置”时,先前输入的文本再次作为新单元格添加。 –
这是因为 - (IBAction)textFieldReturn:(id)发送者被触发两次。 (BOOL)动画,并检查空值: - (void)viewWillDisappear:(BOOL)animated {if _textSearch.text length == 0)return; NSLog(@“%@”,_textSearch.text); ecc ecc – matsoftware
非常感谢!它帮助了我。你能否在你的问题答案中插入你的评论?我想接受你的建议作为我的问题的正确解决方案。 –