1

嗨,我是 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];
4

3 回答 3

1

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

你可以通过使用协议和委托来调用父类方法。

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

希望能帮助到你。快乐编码:)

于 2012-09-11T05:57:48.563 回答
0

既然你已经继承了你的所有方法superclasssubclass那么你只需要[self creatingScroll]在子类中调用。

于 2012-09-11T06:11:23.437 回答
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];
于 2012-09-11T06:52:41.903 回答