2014-02-07 5 views
0

Итак, у меня есть HistoryViewController, и когда я нажимаю на ячейку, я хотел бы получить это значение этой ТОЧНОЙ ячейки для прослушивания на моем DetailsViewController. Таким образом, когда пользователь нажимает кнопку «Paid» в моем диспетчере DetailsViewController, мой HistoryViewController может отметить эту ячейку SPECIFIC «Paid».Как получить выбранную ячейку для просмотра таблицы на другом представлении

EDIT:

Итак, в моей основной модели данных данных у меня есть 2 объектов. Один - PeopleYouOwe. Другой - PeopleWhoOweYou. Каждый объект имеет атрибут «Платный». Платный установлен на тип BOOLEAN. Когда я нажимаю ячейку в своем HistoryTableViewController, он направляет меня на мой DetailViewController. В моем DetailViewController у меня есть кнопка, называемая «Платная». Когда пользователь нажимает эту кнопку, я хочу знать, как я могу сделать ячейку, на которую была нажата кнопка YES. После этого я хотел бы обновить все мои объекты в CoreData, чтобы атрибут выбранной ячейки был SAVED равным YES для значения BOOLEAN «Paid».

ответ

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]; 
    } 



EDIT: Вы можете проверить этот сайт, чтобы запомнить синтаксис блока http://fuckingblocksyntax.com/

+0

My view view controller - TableViewController. Мой DetailsViewController - это обычный вид – doc92606

+0

Только что отредактировал мой ответ, сообщите мне, если это сработает. – jbouaziz

+0

, чтобы я мог установить id object = [YouOweArray objectAtIndex: indexPath.row] правильно? – doc92606

0

Вам необходимо создать свойство того же типа, что и «значение» в вашем DetailsViewController. Когда пользователь нажимает на ячейку, в вашем методе 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 
Смежные вопросы