iOS - NavController & Custom Views - PullRequest
       0

iOS - NavController & Custom Views

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

Авария:

- [UIImageView setParentViewController:]: нераспознанный селектор отправлен на экземпляр 0x58701e * Завершение работы приложения из-за невыполненного выполнения «NSInvalidArgumentExecption», причина: '- [UIImageView setParentViewController:]: нераспознанный селектор, отправленный экземпляру 0x58701e0'

Это происходит, когда я пытаюсь вставить пользовательский UIViewController, который сделан без IB.

Когда я делаю это с IB, это работает, но это не совсем то, что мне нужно.

Что называют моим делегатом

-(void)switchToTrailerOne 
{
CGsize screenSize = [UIScreen mainScreen].bounds.size;
CGRect screenBounds = CGRectMake(0, 0, ScreenSize.width, screenSize.height);
TrailersViewController *trailersController = [[TrailersViewController alloc] initWithFrame:screenBounds];

[self.navController pushViewController:trailersController animated:NO]; (Crashes on this line)

[trailersController gotoFirstTrailer];
}

Спросите меня о любом другом коде, который выглядит так, как будто я почти никогда не покидаю комп более, чем на час.

Редактировать: файлы немного длинны, какие-либо конкретные разделы вас интересуют? Я опубликую несколько кандидатов, которые я считаю вероятными ...

-(void)loadView{

    CGSize screenSize = [UIScreen mainScreen].bounds.size;
    CGRect screenBounds = CGRectMake(0, 0, screenSize.width, screenSize.height);
    myTrailersView = [[UIImageView alloc] initWithFrame:screenBounds];
    myTrailersView.autoresizesSubviews = YES;
    self.view = myTrailersView;
}

//Initiation Method
- (void)viewDidLoad {
    [super viewDidLoad];

    //self.myTrailersView.frame = self.view.frame;

    //Turn User Interaction ON - UI Image Views are Off By Default
    myTrailersView.userInteractionEnabled = YES;

    //Set Position Counters to starting values
    currentNode              = 0;
    currentPosition          = 0;

    //Allocate the Node Collection
    nodeCollection           = [NodeSet alloc];

    //Copy the Node Collection to the Receiver Array
    nodeArray                = nodeCollection.createNodeList;

    //Done With Node Collection Release it
    [nodeCollection release];

    //
    //Create the button that launches the cutaway view
    //
    UIBarButtonItem *rotationButton = [[UIBarButtonItem alloc] initWithTitle:@"Cutaway View" 
                                                                       style:UIBarButtonItemStylePlain 
                                                                      target:self 
                                                                      action:@selector(gotoRotationView)];
    self.navigationItem.rightBarButtonItem = rotationButton;
    [rotationButton release];

    ////////Setup the Swipe Forward Recognizer////////

    UISwipeGestureRecognizer *recognizerUp;

    recognizerUp             = [[UISwipeGestureRecognizer alloc]
                    initWithTarget:self action:@selector(handleSwipeFrom:)];

    [recognizerUp setDirection:(UISwipeGestureRecognizerDirectionUp)];
    [myTrailersView addGestureRecognizer:recognizerUp];
    [recognizerUp release];

    ////////Setup the Swipe Backward Recognizer////////

    UISwipeGestureRecognizer *recognizerDown;

    recognizerDown            = [[UISwipeGestureRecognizer alloc] 
                                    initWithTarget:self action:@selector(handleSwipeFrom:)];

    recognizerDown.direction  = UISwipeGestureRecognizerDirectionDown;
    [myTrailersView addGestureRecognizer:recognizerDown];
    [recognizerDown release];

    ////////Setup the Swipe Left Recognizer////////

    UISwipeGestureRecognizer *recognizerLeft;

    recognizerLeft            = [[UISwipeGestureRecognizer alloc] 
                                    initWithTarget:self action:@selector(handleSwipeFrom:)];

    recognizerLeft.direction  = UISwipeGestureRecognizerDirectionLeft;
    [myTrailersView addGestureRecognizer:recognizerLeft];
    [recognizerLeft release];

    ////////Setup the Swipe Right Recognizer////////

    UISwipeGestureRecognizer *recognizerRight;

    recognizerRight           = [[UISwipeGestureRecognizer alloc] 
                                    initWithTarget:self action:@selector(handleSwipeFrom:)];

    recognizerRight.direction = UISwipeGestureRecognizerDirectionRight;
    [myTrailersView addGestureRecognizer:recognizerRight];
    [recognizerRight release];
}

- (id)initWithFrame:(CGRect)frame {
    self = [super.view initWithFrame:frame];

    return self;
}

1 Ответ

1 голос
/ 09 августа 2011

Похоже, что вы пытаетесь нажать пользовательский UIView, а не пользовательский UIViewController.Проверьте иерархию классов TrailersViewController.

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