我可以使用相同的方法传入不同的UIViewController子类吗?

时间:2011-03-07 22:48:36

标签: iphone objective-c ios uiviewcontroller

我有一个离开的自定义类并与Web服务进行对话。目前,我有一个使用我的服务类的UIViewController子类,并且可以很好地获取数据。

我将我的UIViewController子类的引用发送到服务查询方法(queryServiceWithParent)作为方法参数。

然后我将UIViewController子类存储在一个属性中,以便稍后在类中使用它。

NeighbourhoodData.h:

NeighbourhoodDetailTableViewController *viewController;

NeighbourhoodData.m:

- (void)queryServiceWithParent:(UIViewController *)controller {

    viewController = (NeighbourhoodDetailTableViewController *)controller;

}

我的问题是我现在想在另一个视图中使用不同的UIViewController子类。

我可以通过相同的方法传递子类,因为我的参数只是一个UIViewController,但是将我的类属性设置为正确的UIViewController子类类型。

有没有办法可以做到这一点?我对整个iPhone开发场景都很陌生,所以我想这样做的唯一方法就是创建一个新类,但我认为必须有更好的方法......

2 个答案:

答案 0 :(得分:1)

你可以问id这是什么类。这样的事情可能有用:

- (void)doStuffWithMyViewController:(UIViewController *)controller
{
    if ([controller isKindOfClass:[FirstViewControllerSubclass class]])
    {
        //The controller is a FirstViewControllerSubclass or a subclass of FirstViewControllerSubclass
    }

    if ([controller isKindOfClass:[SecondViewControllerSubclass class]])
    {
        //The controller is a SecondViewControllerSubclass or a subclass of SecondViewControllerSubclass
    }
}

从那里你可以根据它们的子类或你想要的任何东西做不同的事情。

另外要考虑的是如果两个视图控制器之间存在共享功能,则为两个视图控制器创建一个公共超类

答案 1 :(得分:0)

要么为其他要创建的类创建一个类方法,要么必须学会设置委派以使当前的类成为其他类的委托。