Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c UIScrollView控制器-从嵌套nib更改scrollview属性?_Objective C_Xcode_Uiviewcontroller_Uiscrollview - Fatal编程技术网

Objective c UIScrollView控制器-从嵌套nib更改scrollview属性?

Objective c UIScrollView控制器-从嵌套nib更改scrollview属性?,objective-c,xcode,uiviewcontroller,uiscrollview,Objective C,Xcode,Uiviewcontroller,Uiscrollview,我目前正在开发一个使用scrollViewController的应用程序,因为我需要一个垂直和水平的滚动条,以便加载NIB的嵌套视图 这一切都很好,但当我将UIPicker添加到我的一个嵌套NIB中时,它不会滚动,我已经读到,通过在UIScrollView中禁用滚动,可以很容易地解决这个问题,但是我不能100%确定如何从另一个类中做到这一点 scrollViewController.h @interface scrollViewController : UIViewController <

我目前正在开发一个使用scrollViewController的应用程序,因为我需要一个垂直和水平的滚动条,以便加载NIB的嵌套视图

这一切都很好,但当我将UIPicker添加到我的一个嵌套NIB中时,它不会滚动,我已经读到,通过在UIScrollView中禁用滚动,可以很容易地解决这个问题,但是我不能100%确定如何从另一个类中做到这一点

scrollViewController.h

@interface scrollViewController : UIViewController <UIScrollViewDelegate>{

    UIScrollView* scrollView;
    UIPageControl* pageControl;

    UIScrollView *vScrollView;
    UIScrollView *hScrollView;

    BOOL pageControlBeingUsed;
}

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

@property (nonatomic, retain) UIScrollView *vScrollView;
@property (nonatomic, retain) UIScrollView *hScrollView;

- (IBAction)changePage;

@end
在mainView.m中,我创建了一个按钮,将UIPicker带到视图上,但是我希望它使用属性更新scrollViewController中的vScrollView

vScrollView.scrollEnabled=否

在此方面的任何帮助都将不胜感激


感谢Aaron

您可以在应用程序委托类中拥有一个指向scrollViewController的实例变量,然后您可以使用该实例变量的
scrollEnabled
NO

您有一个示例说明如何做到这一点吗?您可以像这样在应用程序中的任何位置访问应用程序委托
[[UIApplication sharedApplication]delegate]
(将其设置为应用程序的委托变量)如果您的AppDelegate中有属性,如
@属性(非原子的,保留的)UICrollViewController*您的滚动控制器无论何时创建scrollViewController,都将其设置为ScrollController。然后,当你想禁用它时,就这样做。MyAppDelegate(无论其名称为何)*del=[[UIApplication sharedApplication]delegate];`
del.yourcollController.vScrollView.Scroll Enabled=否像这样。谢谢,这很有意义。我的应用程序委托只需再问一个问题,将scrollViewController作为视图加载,这就是属性所在的位置?我是否需要更改它的工作方式,因为目前我认为没有任何来自app delegate的直接连接。如果您只是创建和推送该视图,而没有保存任何全局变量(我指的是app delegate的属性或变量),则需要添加属性来保存它。如果您已经这样做了,您可以使用该属性访问您的scrollViews。您好,很抱歉AppDelegate中出现问题,它当前在didFinishLaunching[window addSubview:scrollViewController.view]中加载scrollViewController;[WindowMakeKeyandVisible];正在努力解决如何从appDelegate连接到视图?
- (void)viewDidLoad
{
    [super viewDidLoad];

    CGRect bounds = self.view.bounds;

    // main guy is a horizontal scroller
    hScrollView = [[UIScrollView alloc] initWithFrame:bounds];
    hScrollView.contentSize = CGSizeMake(bounds.size.width * 2, bounds.size.height);
    hScrollView.delegate = self;
    [self.view addSubview:hScrollView];

    // the horizontal scroller contains a vertical scroller
    vScrollView = [[UIScrollView alloc] initWithFrame:bounds];
    vScrollView.contentSize = CGSizeMake(bounds.size.width, bounds.size.height * 2);
    vScrollView.delegate = self;
    [hScrollView addSubview:vScrollView];


    2ndView *view2 = [[2ndView alloc] initWithNibName:@"2ndView" bundle:nil];
    [vScrollView addSubview:view2.view];
    vScrollView.contentOffset = CGPointMake(0, bounds.size.height);

    mainView *vc = [[mainView alloc] initWithNibName:@"mainView" bundle:nil];
    vc.view.frame = CGRectOffset(bounds, 0, bounds.size.height); 
    [vScrollView addSubview:vc.view];


    // 3rd View
    ValidatorView *vc3 = [[ValidatorView alloc] initWithNibName:@"ValidatorView" bundle:nil];
    vc3.view.frame = CGRectOffset(bounds, bounds.size.width, 0); 

    [hScrollView addSubview:vc3.view]; 

    // enable paging in both directions
    hScrollView.pagingEnabled = TRUE;
    vScrollView.pagingEnabled = TRUE;

    hScrollView.showsHorizontalScrollIndicator = FALSE;
    vScrollView.showsVerticalScrollIndicator = FALSE;
    hScrollView.alwaysBounceHorizontal = FALSE;
    vScrollView.alwaysBounceVertical = FALSE;
    vScrollView.canCancelContentTouches =   NO;
    vScrollView.delaysContentTouches = NO;    
    hScrollView.bounces = FALSE;
    vScrollView.bounces = FALSE;
}