从另一个类创建superview的子视图不起作用

时间:2012-09-11 05:53:03

标签: iphone ios uiviewcontroller uiscrollview parent-child

嗨,我是iOS的新手。

我有2个类,一个是父类,另一个是子类。我在父类中有一个方法将创建一个UIScrollView。我试图通过创建父类的对象从子类调用该父类方法。当我从子类调用时调用该方法但是如果我通过使用self在父类中调用相同的方法它不会创建UIScrollView它会创建UIScrollView。

我不知道我在哪里制造问题。请指导我

//父类//中的scrollview创建方法

  -(void)creatingScroll
{
UIScrollView * propertyScrl = [[UIScrollView alloc]initWithFrame:CGRectMake(10, 200, 320, 160)];
propertyScrl.scrollEnabled = YES;
propertyScrl.showsHorizontalScrollIndicator = YES;
propertyScrl.contentSize = CGSizeMake(600, 60);
propertyScrl.backgroundColor = [UIColor redColor];
[self.view addSubview:propertyScrl];

}

//从子类//

调用上面的方法
    ParentViewController *vc = [[ParentViewController alloc]init];

    [vc creatingScroll];

3 个答案:

答案 0 :(得分:1)

你正在创建ParentViewController的另一个对象,并在该对象上调用creatingScroll方法,这不是推送到viewController上的视图。

你可以使用协议和协议来调用父类方法。与会代表。

请参阅http://mobiledevelopertips.com/objective-c/the-basics-of-protocols-and-delegates.html

希望它有所帮助。快乐的编码:)

答案 1 :(得分:0)

由于您已经在superclass中继承了subclass的所有方法,因此您只需要在子类中调用[self creatingScroll]

答案 2 :(得分:0)

  -(UIScrollView *)creatingScroll
{
UIScrollView * propertyScrl = [[UIScrollView alloc]initWithFrame:CGRectMake(10, 200, 320, 160)];
propertyScrl.scrollEnabled = YES;
propertyScrl.showsHorizontalScrollIndicator = YES;
propertyScrl.contentSize = CGSizeMake(600, 60);
propertyScrl.backgroundColor = [UIColor redColor];
 //[self.view addSubview:propertyScrl];  // don't add here

return propertyScrl;

}

//calling above method from child class or any class//
probably in viewDidLoad of child class 

 ParentViewController * vc = [[ParentViewController alloc]init];

  UIScrollView * scrollView = (UIScrollVIew * ) [vc creatingScroll];

    [self.view addSubView:scrollView];