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