所以我有一个HistoryViewController,当我点击一个单元格时,我希望在我的DetailsViewController上获得该EXACT tapped单元格的值。这样当用户点击我的DetailsViewController中的“付费”按钮时,我的HistoryViewController可以标记该SPECIFIC单元格“付费”。
编辑:
好的,所以在我的核心数据数据模型中,我有2个实体。一个是PeopleYouOwe。另一个是PeopleWhoOweYou。每个实体都有一个名为“付费”的属性。付费设置为键入BOOLEAN。当我点击 HistoryTableViewController 中的单元格时,它会将我引导至 DetailViewController 。在我的DetailViewController中,我有一个名为“付费”的按钮。当用户点击此按钮时,我想知道如何将被点击的单元格设置为YES。之后,我想更新我在CoreData中的所有实体,以便为BOOLEAN值“付费”将所选单元格的属性保存为YES。
答案 0 :(得分:0)
您需要在DetailsViewController中创建与“value”相同类型的属性。当用户点击一个单元格时,在didSelectRowAtIndexPath方法上,将该值传递给DetailsViewController实例。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// ...
MyObject *object = //.... get the value for that row
myDetailsViewController.myselectedObject = object;
// myDetailsViewController is the instance of the detailsViewController
// ...
}
因此,在DetailsViewController的代码中,您可以使用
操作该对象[self myselectedObject]
例如对于付费按钮,您可以设置
self.myselectedObject.paid = YES; //... or whatever you want to do
答案 1 :(得分:0)
您可以向DetailViewController
@property (copy, readwrite, nonatomic) void (^payButtonActionHandler)(BOOL didPay)
如果要创建某种切换,didPay
参数很有用。
在您的DetailViewController
实施中:
- (void)paidButtonAction:(UIButton *)sender {
if (self.payButtonActionHandler)
self.payButtonActionHandler(YES);
}
在HistoryViewController
:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
Person *person = // get your person object for this row
DetailsViewController *vc = [DetailsViewController new];
vc.payButtonActionHandler = ^(BOOL didPay) {
// Update your entity
person.hasPaid = didPay;
// Reload the row
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
}
[self.navigationController pushViewController:vc animated:YES];
}
编辑:您可以查看此网站以记住阻止语法http://fuckingblocksyntax.com/