Кнопка «Готово» не закрывает модал-контроллер - PullRequest
1 голос
/ 15 января 2012

Когда я нажимаю кнопку «Готово», это не означает, что в моем случае это modalviewcontroller, это infoviewcontroller. Я должен добавить что-нибудь в mainviewcontroller h и m file.

В Infoviewcontroller.h

#import <UIKit/UIKit.h>

@protocol ModalViewDelegate <NSObject>

-(void) dismissModalView;

@end

@interface Infoviewcontroller : UIViewController <UITextViewDelegate>

{
id<ModalViewDelegate>dismissDelegate;
UITextView *textView;
UINavigationBar *navBar;

}

@property (nonatomic, retain) UITextView *textView;
@property (nonatomic, assign) UINavigationBar *navBar;
@property (nonatomic, assign) id<ModalViewDelegate>dismissDelegate;

@end

В Infoviewcontroller.m

#import "Infoviewcontroller.h"
#import <QuartzCore/QuartzCore.h>


@implementation Infoviewcontroller

@synthesize textView;
@synthesize navBar;
@synthesize dismissDelegate;



-(void)dealloc
{
[textView release];
[navBar release];
[super dealloc];
}

- (void) viewDidLoad
{
  [super viewDidLoad];

    UIButton* backButton = [UIButton buttonWithType:101]; 
    [backButton addTarget:self action:@selector(dismissView:) forControlEvents:UIControlEventTouchUpInside];
    [backButton setTitle:@"Done" forState:UIControlStateNormal];

    // create button item
    UIBarButtonItem* backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];

    // add the button to navigation bar
    self.navigationItem.leftBarButtonItem = backItem;
    [backItem release];

 -(void)dismissView:(id)sender
{
    //Make the delegate close the modal
    [self.dismissDelegate dismissModalView];

}

Когда я нажимаю кнопку «Готово», это не означает, что в моем случае это modalviewcontroller, это infoviewcontroller. Я должен добавить что-то в mainviewcontroller ч и м файла. Пожалуйста, помогите мне, если я что-то упустил в файлах mainviewcontroller.

Спасибо за помощь,

1 Ответ

3 голосов
/ 15 января 2012
-(void)dismissView:(id)sender
{
       [self dismissModalViewControllerAnimated:YES];

}

но если вы хотите отклонить контроллер в методе делегата, сначала вы должны установить делегат в infoviewController, а затем в методе делегата использовать объект infoviewController, чтобы отклонить его.

...