Передать объект между двумя контроллерами представления - PullRequest
0 голосов
/ 22 августа 2011

Я пытаюсь передать объект между 2 виртуальными машинами, от всплывающего окна до подробного представления контроллера с разделенным видом.

Я думаю, что мне нужно использовать NSNotificationCenter.

Я пробовал этоно не могу заставить его работать.

В didSelectRow поповера

  [[NSNotificationCenter defaultCenter] postNotificationName:@"PassObject" withObject:objectToPass];

В detail VC

    - (void) didReceiveNotificationPassObject:(NSNotification*)notification  
    {
        YourObjectClass *theObject = (YourObjectClass*)notification.object;
    }

    - (void)viewDidLoad 
    {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveNotificationPassObject:) name:@"PassObject" object:nil];
    }

Ответы [ 3 ]

0 голосов
/ 22 августа 2011

Возможно просто опечатка при вводе вопроса, но в первой строке, где вы отправляете уведомление

[[NSNotificationCenter defaultCenter] postNotificationName:@"PassObject" withObject:objectToPass];

подпись метода неверна - это должно быть «object: objectToPass», а не «withObject: objectToPass». Линия, которая у вас есть, будет компилироваться с предупреждением и сбоем во время выполнения.

Кроме того, вся логика выглядит хорошо.

0 голосов
/ 13 марта 2013

Быстрое и простое решение для уведомления с несколькими параметрами - вызвать уведомление так:

[[NSNotificationCenter defaultCenter] postNotificationName:@"shareButton" object:@"camera"];

Где «камера» действует как ваш параметр.Тогда

- (void)shareButton:(id)sender
{
   NSString *kindOf = [sender object];

    if ([kindOf isEqualToString:@"camera"]) {
         // Your code goes here
    }
 }
0 голосов
/ 22 августа 2011

С какой проблемой вы сталкиваетесь? didReceiveNotificationPassObject: бьет? Если это не так, вы можете убедиться, что viewDidLoad выполняется до didSelectRow.

Используйте [[NSNotificationCenter defaultCenter] postNotificationName:@"PassObject" object:objectToPass]; вместо [[NSNotificationCenter defaultCenter] postNotificationName:@"PassObject" withObject:objectToPass];

Кроме того, не забудьте removeObserver в viewDidUnload.

НТН,

Акшай

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...