gpt4 book ai didi

ios - 使用核心数据和 NSFetchedResultsControllers 预填充 UITextField

转载 作者:行者123 更新时间:2023-11-29 03:10:24 25 4
gpt4 key购买 nike

我有一个简单的应用程序,我需要一些关于一项新功能的帮助。

该应用程序是一个 TableView (TV1),由用户添加一个条目(导航栏中的一个按钮,它以模态方式为用户填写名称、事件和金额文本字段和从日期选择器中选择一个日期)。

表格 View Controller 是选项卡栏 Controller 的一部分,其中第一个选项卡显示所有内容(时间线),第二个选项卡仅显示事件列表。如果您单击一个事件,您将继续查看与该事件相关的所有交易。

我在这里还添加了一个条形按钮项,它与 Add Entry View Controller 相连,目的是让事件已经被选中。

我的意思是:

假设您在交易中有 3 个事件,分别是婚礼、生日和周年纪念日。如果单击事件选项卡,您将在表格 View 中看到婚礼、生日和周年纪念日。单击生日将显示事件 = 生日的所有交易。

我有一个栏按钮项目,它允许我从这个屏幕添加条目,但因为它来自生日事件,我希望该事件文本字段已经填写,在添加条目中使用这个名称事件(在本例中为生日)。

我正在使用核心数据和 NSFetchedResultsController。

现在的情况是,当我按下按钮从所选事件(生日)中添加新条目时,它并没有在添加条目屏幕中预先配置带有生日的事件文本字段。

这里有一些代码,应该可以解释我在做什么。

从事件选项卡

// This segues over to the selected event (Birthday). 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSIndexPath *indexPath = [self.eventTableView indexPathForCell:sender];
Occasion *selectedOccasion = [self.fetchedResultsController objectAtIndexPath:indexPath];
if ([segue.identifier isEqualToString:@"Selected Occasion Segue"])
{
ESelectedOccasionTableViewController *selectedOccasionTVC = [segue destinationViewController];
[selectedOccasionTVC setOccasion:selectedOccasion];
}
}

在“选定事件”选项卡(生日)中,我创建了两个 segue,一个用于编辑单元格,一个用于创建新条目:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSIndexPath *indexPath = [self.selectedOccasionTableView indexPathForCell:sender];
Transaction *seletedTransaction = [self.fetchedResultsController objectAtIndexPath:indexPath];
// The first segue is to "edit" the existing entry
if ([segue.identifier isEqualToString:@"Editable Cell"])
{
EDetailViewController *dvc = (EDetailViewController *)segue.destinationViewController;
dvc.selectedTransaction = seletedTransaction;
}
// This segue is to create a new entry from the event
else if ([segue.identifier isEqualToString:@"Create New Entry From Event"])
{
EddEntryViewController *eAppEntryViewController = (EAddEntryViewController *)segue.destinationViewController;
[eAppEntryViewController setSelectedTransaction:selectedTransaction];
}
}

第一个 segue 用于编辑单元格(效果很好),但在第二个 segue 中,我在这里感兴趣的是,我实际上并没有点击单元格;我正在单击一个条形按钮项目,它将以模式方式显示添加条目。我只想从此 TableView 中获取“事件”(生日)并在添加条目中预填充“事件文本字段”。

The setSelectedTransaction in the Add Entry is:

- (void)setSelectedTransaction:(Transaction *)selectedTransaction
{
_selectedTransaction = selectedTransaction;
self.occasionTextField.text = _selectedTransaction.occasion.title;
}

我无法想象我离完成这项工作还有很远的距离,但任何对此的帮助都会非常棒,因为我真的被困住了。

我应该在 viewDidLoad 中设置一些东西吗? (那也不起作用)。

我没有选择表格 View 单元格,这就是为什么我理解 [eAppEntryViewController setSelectedTransaction:selectedTransaction];行实际上并没有传递任何东西,因为我点击的是条形按钮项目,而不是表格 View 单元格。

模型是:链接到日期和事件实体的交易实体。

最佳答案

我已经通过以下方式解决了这个问题:

 EAddEntryViewController *eAppEntryViewController = (EAddEntryViewController *)segue.destinationViewController;
[eAppEntryViewController setSelectedEvent:self.occasion.title];

调用了:

- (void)setSelectedEvent:(NSString *)selectedEvent
{
_selectedEvent = selectedEvent;
}

在 viewWillAppear 中,我做了:

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.occasionTextField.text = self.selectedEvent;
}

这就是它的工作方式,我对此很满意。

关于ios - 使用核心数据和 NSFetchedResultsControllers 预填充 UITextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22308240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com