我遇到了在视图之间转换的问题,需要一些帮助。这有点令人沮丧,所以请耐心等待。
我有一个名为JobsNavController
的UINavigationController。 JobsNavController中的第一个视图包含一个名为JobsTableViewController
的UITableViewController [带有一个名为JobTableView.xib
的链接笔尖]。我想在UINavController中添加一个Add
UIButton来“创建一个新工作”。点击后,它应该从JobTableView.xib
翻转到名为JobCreateViewController
的{{1}}笔尖。由于'add'按钮位于UINavController中,我将IBAction代码放在JobCreateView.xib
内。
以下是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];
}
答案 0 :(得分:1)
当你致电tellDelegateToFlip
时,请确保你没有参数 - 这就是导致崩溃的原因。如果您在崩溃报告中发现,则表示无法识别的选择器tellDelegateToFlip:
正在发送到您的实例。注意冒号位于方法名称之后。这意味着无论您何时调用该方法,都会使用它发送一个对象。如果您使用performSelector:withObject:afterDelay:
,请确保不使用冒号。
编辑:
而不是:
UIViewController* transitionTo = jobCreateViewController;
为什么不使用:
JobCreateViewController* transitionTo = jobCreateViewController;
或者你可以投射它,假设JobCreateViewController
继承自UIViewController。
答案 1 :(得分:1)
方法执行错误:
-(IBAction)tellDelegateToFlip:(id)sender;
应该是:
-(IBAction)tellDelegateToFlip:(id)sender {
...
}
在你的JobsNavController.m
中