0

хорошо это мой первый пост & не может загрузить изображение, потому что мне нужен 10 репутации, XD, но это, s ИТАК:как передать данные с моего второго контроллера представления на мой первый контроллер просмотра с помощью раскадровки или segues, протоколов и делегатов?

enter image description here

Привет ребята, ну мне нужно передать label.text от моего ячейку в моем табличном представлении с моего второго или дочернего контроллера представления, до моего первого или родительского контроллера представления, я хочу нажать в ячейку & вернуться со строкой для загрузки в метку с моего первого контроллера представления, я использовал segues из раскадровки , Я использовал протоколы & делегатов, но не работал, в других вопросах ответы или примеры противоречат тому, что мне нужно, или это совсем другой способ для версии xcode или как наилучший способ для t o сделать это ?, на картинке я использую кнопку для перехода к следующему контроллеру представления для выбора текста ярлыка, который я хочу в моем первом контроллере представления, Im с использованием xcode 4.6 & раскадровка & ARC тоже & некоторые строки кода не рекомендуется, пожалуйста, помогите мне, ребята! & спасибо LOT !!!,

поздравления от BOLIVIA !!! ñ_ñ»

код выглядит так:

 @interface FirstViewController : UIViewController <SecondTableViewControllerDelegate> 

    @property (copy, nonatomic) NSString *displayText; 
    @property (weak, nonatomic) IBOutlet UILabel *displayLabel; 
    @property (strong, nonatomic)IBOutlet UIButton *Next; 

    @end 

    @interface FirstViewController() 

@end 

@implementation FirstViewController 
@synthesize Next; 


    -(void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     if (![[NSUserDefaults standardUserDefaults] objectForKey:@"FIRST_TIME"]) 
     { 
      NSLog(@"ES PRIMERA VEZ"); 
      [Next sendActionsForControlEvents:UIControlEventTouchUpInside]; 
     } 
     else 
     { 
      NSLog(@"NO ES PRIMERA VEZ"); 
     } 


    } 

    - (void)viewWillAppear:(BOOL)animated { 
     [super viewWillAppear:animated]; 

     if (self.displayText) 
     { 
      self.displayLabel.text = self.displayText; 
     } else { 
      self.displayLabel.text = kDefaultDisplayText; 
     } 
    } 

    #pragma mark - Delegate methods 

    - (void)updateText:(NSString *)text { 
     self.displayText = text; 
    } 

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
     if (![segue.identifier isEqualToString:@"toSecondTableview"]) { 
      return; 
     } 
     /* 
     SecondTableViewController *destinationController = segue.destinationViewController; 
     destinationController.delegate = self; 
     destinationController.editText = self.displayText; 
     */ 

     //-- if I pass data from the first view controller to the second right? 

    } 

    @end 

in the second view 

    @protocol SecondTableViewControllerDelegate <NSObject> 

    @optional 
    - (void)updateText:(NSString *)text; 

    @end 

    @interface SecondTableViewController : UIViewController<UITableViewDelegate, UITableViewDataSource> 

    @property (weak, nonatomic) id<SecondTableViewControllerDelegate> delegate; 
    @property (copy, nonatomic) NSString *editText; 
    @property (weak, nonatomic) IBOutlet UITableView *myTable; 


    @interface SecondTableViewController() 

    @end 

    @implementation SecondTableViewController 

    -(void)viewDidLoad 
    { 
     [super viewDidLoad]; 
     [[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:@"FIRST_TIME"]; 

     //---how use the UItable Methods?, how use the protocol method? 
    } 


    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    { 
     return self.myArray.count; 
    } 

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     static NSString *CellIdentifier = @"myArray"; 

     myArrayCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

     NSDictionary *conjunto = [self.jogArray objectAtIndex:indexPath.row]; 

     cell.myLabel.text = [conjunto objectForKey:@"prueba"]; 


     return cell; 
    } 

или делегат протокол должен быть в другом контроллере представления ?, Я ХОЧУ ПОКАЗАТЬ В LABEL ТЕКСТ ИЗ ЛЮБОЙ КЛЕТКИ ИЗ СЛЕДУЮЩЕГО ЗРЕНИЯ УПРАВЛЕНИЯ КАК AM Я ДЕЛАТЬ?

+0

проблема такая [ссылка] (http://g14.picoodle.com/ltd/img14/5/3/5/dennis_mostajo/f_1nyc_5fb_ud7ko.png) –

+0

Выглядит хорошо. Вы просто не назовете 'updateText:'. Задание делегата закомментировано. Зачем?. Это необходимо для отправки сообщения 'updateText:' делегату. –

+0

, потому что этот код работает, если я хочу передавать данные с первого контроллера представления ко второму, но не второму из первого –

ответ

0

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

- (void) labelText:(NSString*)text; 

или около того. Имейте контроллер параллельного представления, реализующий протокол. Скажем, это называется YourProtocol. В контроллере child view объявите свойство делегата типа (id)<YourProtocol>. В диспетчере пространственного просмотра назначьте self на номер childControler.delegate. Когда он собирается назначить текст, дважды проверьте, согласуется ли делегат с протоколом или отвечает на метку selctorText: а затем просто вызовите его.

Звучит более полно, чем есть на самом деле, и это своего рода «чистый».

Смежные вопросы

 Смежные вопросы