0

拥有文本项目列表的最佳方式是什么,点击一个并能够对其进行编辑?去详细视图怎么样?但是,你如何让你的改变回到 UITableView 中呢?

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

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

4

2 回答 2

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 delegate;不要忘记@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];
     ...
于 2012-02-15T03:20:08.637 回答
0

“但是那你怎么把你的改变放回 UITableView 呢?”

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

于 2009-08-25T03:04:52.803 回答