获得文本项列表的最佳方法是什么,点击一个文本项并进行编辑?如何进入详细视图?但是,你如何将你的变化带回UITableView?
我想这可以用SQL或CoreData完成,但由于UITableView基于数组,我们可以只编辑该数组的元素并重置表视图吗?
最终我希望数据是持久的,所以我可能会使用CoreData或SQL,但是现在我只想从列表到详细信息,编辑详细信息,然后返回列表。
答案 0 :(得分:0)
“但是你怎么把你的变化带回UITableView?”
表视图和详细视图都应该访问公共模型对象。换句话说,正在改变数据的详细视图甚至不必知道表视图。
答案 1 :(得分:0)
查找协议。基本上你有一个有分享信息的课程。在这种情况下,它将是您的细节控制器或如上所述的某种数据对象。让这个类(与要共享的信息)声明一个使用该信息的协议。该方法应使用参数来隐藏您的信息。该班还宣布了一个 id(小于)协议(大于)委托 其中“协议”是您在上面声明的内容。
现在,在此类中,当您获得要共享的信息时(无论如何),将委托方法消息发送给您的委托。 [delegate informationObtained:newInfo]
。
对于需要此信息的类或类,请实现协议方法。您需要的信息将通过参数传递给方法。这与使用TextFieldDelegate
和UIPickerFieldDelegate
的方式相同,只有您决定协议并决定如何实现它们。这是一个代码示例
在SpeakHereController.h中
@protocol SpeakHereControllerDelegate
-(void)newSoundCreated:(NSString *)newSoundName savedFile:(BOOL)savedFile element: (id)element;
-(void)cancelNewSound;
-(void)soundEdited;
@end
在界面中: id代表; 不要忘记@property,制作它(非原子,分配)
在实施文件中, 一旦我掌握了我想要分享的信息:
[self.delegate newSoundCreated:myFileName savedFile:self.savedFile element:self];
现在,对于想要使用此信息的tableview控制器: 在.h文件中声明您将实现协议
@interface AlarmSoundsTableViewController : UITableViewController <SpeakHereControllerDelegate, UITableViewDataSource, UITableViewDelegate>
然后在实现文件中实现方法:
-(void)newSoundCreated:(NSString *)soundName savedFile:(BOOL)savedFile element:(id)element
{
[self setSoundFileName:soundName];
...