2

私は次のクラスを書きました:

.h

#import <Foundation/Foundation.h>
@class TDLPaneViewController;

@interface TDLSubViewController : NSObject

@property (nonatomic, strong) IBOutlet UIView* view;
@property (nonatomic, strong) TDLPaneViewController* paneViewController;

- (id) initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;

- (void)viewWillAppear:(BOOL)animated;
- (void)viewDidAppear:(BOOL)animated;
- (void)viewWillDisppear:(BOOL)animated;
- (void)viewDidDisppear:(BOOL)animated;

@end

.m

#import "TDLSubViewController.h"

@interface TDLSubViewController ()
{
     UIView *view;
}

@property (nonatomic, strong) NSString* nibName;
@property (nonatomic, strong) NSBundle* nibBundle;

@end

@implementation TDLSubViewController

@synthesize paneViewController, view;
@synthesize nibName, nibBundle;

- (id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super init];

    if (self)
    {
          self.nibName = nibNameOrNil;
          self.nibBundle = nibBundleOrNil;
    }
}

- (void)viewWillAppear:(BOOL)animated
{
     NSLog(@"viewWillAppear:%i", animated);
}
- (void)viewDidAppear:(BOOL)animated
{
     NSLog(@"viewDidAppear:%i", animated);
}
- (void)viewWillDisppear:(BOOL)animated
{
     NSLog(@"viewWillDisppear:%i", animated);
} 
- (void)viewDidDisppear:(BOOL)animated
{
     NSLog(@"viewDidDisppear:%i", animated);
}

@end

別のビューを表示するとエラーが発生します:-(void)viewDidAppear:(BOOL)animated {[super viewDidAppear:animated];

     TDLTestSubViewController* subView = [[TDLTestSubViewController alloc] initWithNibName:@"TDLTestSubViewController" bundle:nil] ;

     [self pushSubViewController:nil animated:YES leftSide:YES];

} 

TDLTestSubViewControllerは、TDLSubViewControllerの子クラスです。

TDLTestSubViewControllerの代わりにUIViewControllerを使用すると、すべてが正常に機能し、ARCをオフにしても問題ありません。したがって、問題はTDLSubViewControllerクラスにあると思います。何が悪いのか提案してください。

4

1 に答える 1

5

initWithNibName:bundle:メソッドは、必要なときに返されませselfん。

于 2013-02-21T13:21:23.237 に答える