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

发布于 2024-07-30 17:51:57 字数 241 浏览 5 评论 0原文

获得文本项目列表、点击其中一个并能够对其进行编辑的最佳方式是什么? 去详细视图怎么样? 但是如何将更改返回到 UITableView 中呢?

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

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

What's the best way to have a list of text items, tap on one and be able to edit it? How about going to a detail view? But then how do you get your change back into the UITableView?

I suppose this could all be done with SQL or CoreData but since the UITableView is based on an array, can we just edit that element of the array and reset the table view?

Eventually I want the data to be persistent so I'll probably go with CoreData or SQL but for now I just want to go from a list to details, edit the details, and go back to the list.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

舞袖。长 2024-08-06 17:51:57

“但是如何将更改返回到 UITableView 中呢?”

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

"But then how do you get your change back into the UITableView?"

Both the table view and the detail view should be accessing a common model object. In other words, the detail view that's changing data doesn't have to even know the table view exists.

离不开的别离 2024-08-06 17:51:57

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

现在,在此类中,当您获取要共享的信息(无论您如何执行)时,都会将委托方法消息发送给您的委托。 [获得的委托信息: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];

现在对于想要使用此信息的表视图控制器:
在 .h 文件中声明您将实现该协议

@interface AlarmSoundsTableViewController : UITableViewController <SpeakHereControllerDelegate, UITableViewDataSource, UITableViewDelegate>

然后在实现文件中实现该方法:

-(void)newSoundCreated:(NSString *)soundName savedFile:(BOOL)savedFile element:(id)element
{

    [self setSoundFileName:soundName];
     ...

Look up protocols. Basically you have a class that has information to share. In this case it will be your detail controller or some sort of data object as mentioned above. Have this class (with the info to share) declare a protocol that uses that information. The method should use parameters to sneak out your information. The class also declares a
id (less than)protocol(greater than) delegate
where "protocol" is what you declared above.

Now in this class when you obtain the information that you want to share (however you do it) send the delegate method message to your delegate. [delegate informationObtained:newInfo].

For the class or classes that need this information, implement the protocol method(s). The information you need is being passed by the parameters to the method. It's the same way you use TextFieldDelegate and UIPickerFieldDelegate, only you decide the protocol and you decide how to implement them. Here's a code example

In SpeakHereController.h

@protocol SpeakHereControllerDelegate
-(void)newSoundCreated:(NSString *)newSoundName savedFile:(BOOL)savedFile element:  (id)element;
-(void)cancelNewSound;
-(void)soundEdited;
@end

in the interface:
id delegate;
don't forget the @property, make it (non atomic, assign)

In the implementation file,
once I have the information I want to share:

[self.delegate newSoundCreated:myFileName  savedFile:self.savedFile element:self];

Now for the tableview controller that wants to use this information:
in the .h file declare that you are going to implement the protocol

@interface AlarmSoundsTableViewController : UITableViewController <SpeakHereControllerDelegate, UITableViewDataSource, UITableViewDelegate>

Then in the implementation file implement the method:

-(void)newSoundCreated:(NSString *)soundName savedFile:(BOOL)savedFile element:(id)element
{

    [self setSoundFileName:soundName];
     ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文