0

所以我通过按下段工具将 UIView 与 UIScrollView 添加到另一个视图中:

UIView.h

@interface gettingELORolesViewController : UIViewController{
    UIViewController *currentController;
    NSMutableArray *viewControllers;
}
- (IBAction)SegmentToggle:(UISegmentedControl *)sender;
@property (strong, nonatomic) IBOutlet UIView *containerView;

UIView.m

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Storyboard_iPhone"
                                                  bundle:nil];

 firstView *FirstView = [sb instantiateViewControllerWithIdentifier:@"firstOne"];
 secondView *SecondView = [sb instantiateViewControllerWithIdentifier:@"secondOne"];

 viewControllers = [NSMutableArray arrayWithObjects:FirstView,SecondView,nil];

 currentController = FirstView;

 [containerView addSubview:FirstView.view];//containerView = self.view

然后取决于选择的段,它显示不同的视图:

- (IBAction)SegmentToggle:(UISegmentedControl *)sender {
    UIViewController *selectedView=nil;

    if (sender.selectedSegmentIndex==0) {
        selectedView= [viewControllers objectAtIndex:0]; // retrieve object at index 0 from viewControllers array

    }
    else if(sender.selectedSegmentIndex==1){    
        selectedView= [viewControllers objectAtIndex:1]; // retrieve object at index 1 from viewControllers array

    }

    [currentController.view removeFromSuperview]; // remove Current displaying view from superView
    currentController=selectedView; // make selected View to be the current View
    [containerView addSubview:selectedView.view]; // Add newly selected view on container View
}

secondView 是 tableViewController,当我选择第二段时,一切都很好。当我选择第一个时,它会出现,但滚动不起作用,我不知道为什么。

firstView.m viewDidLoad 方法如下所示:

-(void)viewDidLoad{
    [super viewDidLoad];
    mainScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    [mainScrollView setContentSize:CGSizeMake(320, 600)];
    [mainScrollView setScrollEnabled:YES];
}

在 storyBoard 中启用了分页。它与 firstView 的 .h 文件挂钩。请告诉我我做错了什么。

4

1 回答 1

0

当你打电话时-SegmentToggle:

  • 您创建一个名为的局部变量selectedView
  • selectedView您根据选择的段分配视图控制器
  • 方法结束,selectedView超出范围

简而言之,你什么也没做。您至少应该将当前视图层次结构中的视图替换为所选控制器的视图(并且可能将对所选控制器的引用存储在实例变量中以供以后查找?)

但是退后一步,看起来您正在尝试创建一个管理其他视图控制器的视图控制器。从 iOS 5 开始,现在有非常具体的规则。请观看WWDC 2011 视频,名为“实现 UIViewController Containment ”以获取更多信息和示例。

于 2013-02-17T18:06:23.427 回答