initWithNibName:我没有滚动,没有导航栏?

时间:2012-05-25 09:03:07

标签: objective-c ios uinavigationcontroller uiscrollview interface-builder

所以我通过其initWithNibName方法将一个带有IBAction标题的按钮指向另一个ViewController。一切都嵌入在NavigationController中。

我还为这个ViewController创建了一个.xib,这是一个快速截图:

enter image description here

这是我的代码:

·H

@interface ModeEmploiController : UIViewController
{
    IBOutlet UIScrollView *scrollView;
    UITextView *vueOffres, *vueInfos, *vueGrilles;
}

@property (nonatomic, retain) IBOutlet UIScrollView *scrollView;

的.m

@implementation ModeEmploiController

@synthesize scrollView;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
    {
        [scrollView setScrollEnabled:YES];
        [scrollView setContentSize:CGSizeMake(320, 529)];
        // Here I define vueOffres, vueInfos and vueGrilles and for each of them :
        [self.view addSubview:vueGrilles/vueInfos/vueOffres];
    }
}

但是当我运行我的应用程序时,我的滚动没有启用,我没有导航控制器的导航栏。发生了什么事?

3 个答案:

答案 0 :(得分:2)

在名为我的内容视图的ScrollView i中添加另一个视图。做

self.scrollView.contentSize = self.contentView.frame.size;

对于导航栏,您需要有一个uinavigation控制器,并使您的控制器成为导航控制器的rootviewcontroller。像这样

-(IBAction)MyButton:(id)sender
{
    MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
    [self.navigationController presentModalViewController:navController animated:YES];
}

答案 1 :(得分:1)

ModeEmploiController移除xib,但请保留其子ViewScrollView

现在点击File's Owner,然后在右侧面板中的身份检查器中添加ModeEmploiController

现在右键点击File's Owner,将view的属性与ViewscrollView的{​​{1}}相关联。

答案 2 :(得分:1)

您的初始化代码使用了错误的方法。

由于您使用的是Storyboard,因此您的视图控制器正在从nib文件中取消归档。初始化控件的正确位置是awakeFromNib方法。

确保您已为滚动视图设置了IBOutlet属性并将其连接到Storyboard中,然后:

- (void)awakeFromNib {
    [self.scrollView setScrollEnabled:YES];
    [self.scrollView setContentSize:CGSizeMake(320, 529)];
    // Here I define vueOffres, vueInfos and vueGrilles and for each of them :
    [self.view addSubview:vueGrilles/vueInfos/vueOffres];
}

这就留下了你要添加的子视图的问题。什么是vueGrilles/vueInfos/vueOffres?您应该在viewDidLoad方法中正确创建此视图,并将其添加为子视图,而不是在此初始化程序中。