如何使用UITableView进行列表/详细信息编辑?

时间:2009-08-14 15:50:36

标签: uitableview master-detail

获得文本项列表的最佳方法是什么,点击一个文本项并进行编辑?如何进入详细视图?但是,你如何将你的变化带回UITableView?

我想这可以用SQL或CoreData完成,但由于UITableView基于数组,我们可以只编辑该数组的元素并重置表视图吗?

最终我希望数据是持久的,所以我可能会使用CoreData或SQL,但是现在我只想从列表到详细信息,编辑详细信息,然后返回列表。

2 个答案:

答案 0 :(得分:0)

“但是你怎么把你的变化带回UITableView?”

表视图和详细视图都应该访问公共模型对象。换句话说,正在改变数据的详细视图甚至不必知道表视图。

答案 1 :(得分:0)

查找协议。基本上你有一个有分享信息的课程。在这种情况下,它将是您的细节控制器或如上所述的某种数据对象。让这个类(与要共享的信息)声明一个使用该信息的协议。该方法应使用参数来隐藏您的信息。该班还宣布了一个     id(小于)协议(大于)委托 其中“协议”是您在上面声明的内容。

现在,在此类中,当您获得要共享的信息时(无论如何),将委托方法消息发送给您的委托。 [delegate informationObtained:newInfo]

对于需要此信息的类或类,请实现协议方法。您需要的信息将通过参数传递给方法。这与使用TextFieldDelegateUIPickerFieldDelegate的方式相同,只有您决定协议并决定如何实现它们。这是一个代码示例

在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];
     ...