Проблемы Objective-C при переходе между представлениями - PullRequest
0 голосов
/ 23 января 2012

У меня проблемы с переходом между представлениями, и мне нужна помощь. Это несколько странно, так что терпите меня, пожалуйста.

У меня есть UINavigationController с именем JobsNavController. Первое представление в JobsNavController содержит UITableViewController с именем JobsTableViewController [со связанным пером с именем JobTableView.xib]. Я хочу добавить Add UIButton внутри UINavController, чтобы «создать новую работу». При щелчке он должен переключиться с JobTableView.xib на мой JobCreateViewController перо с именем JobCreateView.xib. Поскольку кнопка «добавить» находится внутри UINavController, я поместил код IBAction внутри JobsNavController.h and .m.

Вот это JobsNavController.h

#import <UIKit/UIKit.h>
@class JobCreateViewController, JobsTableViewController;

@interface JobsNavController : UINavigationController {
    IBOutlet UIButton *btnJobCreate;
    IBOutlet JobCreateViewController *jobCreateViewController;
        IBOutlet JobsTableViewController *jobsTableViewController;
}
-(IBAction)tellDelegateToFlip:(id)sender;

@property (nonatomic, retain) UIButton *btnJobCreate;
@property (nonatomic, retain) IBOutlet JobCreateViewController *jobCreateViewController;
@property (nonatomic, retain) IBOutlet JobsTableViewController *jobsTableViewController;

@end

А вот и мой JobsNavController.m

#import "JobsNavController.h", "Time_Blogger1AppDelegate.h", "JobsTableViewController.h"
@implementation JobsNavController
@synthesize btnJobCreate, jobCreateViewController, jobsTableViewController;
.....
-(void)tellDelegateToFlip {
    JobCreateViewController *jobAddView = [jobCreateViewController initWithNibName:@"JobCreateView" bundle:nil];

    [self setJobCreateViewController:jobAddView];
    [jobAddView release];

    UIViewController *transitionTo = jobCreateViewController;

    //create view animation block
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.25];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
    [jobsTableViewController.view removeFromSuperview];
    [self.view insertSubview:transitionTo.view atIndex:0];
    [UIView commitAnimations];

    [transitionTo release];
}

Я не получаю никаких ошибок сборки / компиляции, но симулятор выдает исключение, когда я нажимаю кнопку с указанием:

2012-01-22 19:19:22.895 Time-Blogger1[4209:f803] 
-[JobsNavController tellDelegateToFlip:]: unrecognized selector sent to instance 0x6c85e80 2012-01-22 19:19:22.897 Time-Blogger1[4209:f803] 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 
'-[JobsNavController tellDelegateToFlip:]: unrecognized selector sent to instance 0x6c85e80'

Ответы [ 2 ]

1 голос
/ 23 января 2012

неправильная реализация метода:

-(IBAction)tellDelegateToFlip:(id)sender;

должно быть:

-(IBAction)tellDelegateToFlip:(id)sender {
...
}

в вашем JobsNavController.m

1 голос
/ 23 января 2012

Когда вы звоните tellDelegateToFlip, убедитесь, что вы делаете это без параметров - это то, что вызывает сбой.Если вы заметили в отчете о сбое, он говорит, что нераспознанный селектор tellDelegateToFlip: отправляется вашему экземпляру.Обратите внимание на двоеточие после имени метода.Это означает, что куда бы вы ни вызывали метод, вы отправляли объект вместе с ним.Если вы используете performSelector:withObject:afterDelay:, убедитесь, что не используете двоеточие.

Редактируйте:

Вместо:

UIViewController* transitionTo = jobCreateViewController;

почемуРазве вы не просто используете:

JobCreateViewController* transitionTo = jobCreateViewController;

Или вы можете разыграть его, предполагая, что JobCreateViewController наследуется от UIViewController.

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