以编程方式切换Active View Controller

时间:2013-06-16 20:27:32

标签: objective-c cocoa-touch ios6

我有2个视图作为导航控制器的一部分。

我使用公共方法为我的导航控制器创建了一个类,第一个视图上的某些操作将触发加载详细信息视图控制器。我正在导入详细信息视图控制器,但我的代码中没有任何工作。我知道正在调用该方法,因为我正在记录它。

我在这里做错了什么?

#import <UIKit/UIKit.h>

@interface NearbyController : UINavigationController

- (void) nextpage;

@end

#import "NearbyController.h"
#import "DetailView.h"

@implementation NearbyController


-(void) nextpage {
    NSLog(@"working");

    DetailView *nextView = [[DetailView alloc] init];
    [self pushViewController:nextView animated:YES];
}

@end

3 个答案:

答案 0 :(得分:0)

如果以编程方式初始化视图控制器,则应使用此init

答案 1 :(得分:0)

如果您设置了故事板ID,则可以执行此操作

DetailView *nextView = (DetailView *)[self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewControllerID"];
[self pushViewController:nextView animated:YES];

如果您想从XIB加载,可以调用

DetailView *nextView = [[DetailView alloc] initWithNibName:@"MyDetailViewControllerID" bundle:nil];
[self pushViewController:nextView animated:YES];

希望它有所帮助!

答案 2 :(得分:0)

如果你正在使用故事板,你想要做的是在DetailViewViewController上的身份检查器中设置storyboard id

然后你想要实例化你的视图控制器:

 UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
 DetailView *nextView =[sb instantiateViewControllerWithIdentifier:@"DetailViewViewController"];
 /* your identifier is your storyboard id*/
 sb = nextView.storyboard;

然后你应该能够推动你的视图控制器。 我还是新手,但我希望这会有所帮助!