XCode 4.2.1 Раскадровка возвращает много к одному - PullRequest
0 голосов
/ 03 декабря 2011

Мой дизайн имеет «ключевой» вид, который вызывается из нескольких разных видов.

Используя Xcode Storyboard, как вы можете «нажать» на экран ключа, когда он нужен пользователю, а затем «вытащить» его, чтобы пользователь вернулся к правильному виду?

Похоже, что кнопка может быть связана только с одной точкой возврата?

Спасибо Jim

Ответы [ 2 ]

1 голос
/ 22 августа 2012

Джим, ваш класс Recipe должен иметь слабую ссылку на своего делегата, чтобы избежать потенциальной проблемы сохранения циклов, когда делегат и его владелец хранят ссылки друг на друга, предотвращая надлежащее освобождение любого из них.

До ARC, делегаты обычно были (назначать) свойства. Я не верю, что ARC изменяет это каким-либо образом, кроме изменения назначения на слабое.

1 голос
/ 05 декабря 2011

Спасибо, Чоун - вы были правы.

Решение состоит в том, чтобы создать подкласс UIViewController, а затем использовать протокол делегата

DelegateClass.h

#import <UIKit/UIKit.h>

@protocol ReturnToMainMenu <NSObject>
@required
- (void) processSuccessful: (BOOL)success;
@end

@interface Recipe : UIViewController {
    id <ReturnToMainMenu> delegate;
}

@property (strong) id delegate;

-(IBAction)done:(id)sender;
@end

Delegateclass.m

-(IBAction)backToMainMenu:(id)sender {
    [[self delegate] processSuccessful:YES];
}

Затем объявите протокол в классе вызова

@interface FoodGroup : UIViewController <ReturnToMainMenu>

- (void) processSuccessful:(BOOL)success
{
    NSLog(@"Process completed");
    [self dismissViewControllerAnimated:YES completion:nil];
    //[self performSelector:@selector(done:)];
}
...