如何让UITableView继承UIViewController的自定义子类?

问题描述:

我是iOS开发新手。我有两个表视图和内容细节图是这样的:如何让UITableView继承UIViewController的自定义子类?

PopularContentViewController : UITableViewController 
LatestContentViewController : UITableViewController 
ContentDetailViewController : UIViewController 

我想添加一些认证,使得任何这些控制器被加载之前,我可以保证用户登录,如果没有,显示一个模式登录视图控制器。

我的想法是创建我自己的UIViewController子类(比如AuthenticatedViewController),并让我的其他控制器继承它。问题是,我该怎么做这样的事情:

PopularContentViewController : UITableViewController : AuthenticatedViewController 
LatestContentViewController : UITableViewController : AuthenticatedViewController 
ContentDetailViewController : AuthenticatedViewController 

我发现这个类似的问题:Can I create a UITableViewController that inherits from a custom subclass of UIViewController?

...但我不知道是否有另一种方式做多继承或创建这个其他我自己的UITableViewController扩展了我的AuthenticatedTableViewController?也许通过协议或使用委托代替?只是在正确的方向寻找推动。

Uitableviewcontrollers是一个UIViewController。但是你正在以这种错误的方式去做。创建一个用于认证的根视图控制器,可能将其放置在导航控制器中。然后,一个用户通过身份验证,将其中一个桌面视图控制器推入堆栈(或者在运行时完全替换原始控制器并保存凭据)。 ...

或者,如果您坚持,请使用类别或单例来处理身份验证后端问题(如果可能,请将UI留出)。我会去每个作业的一个视图控制器(在导航控制器容器中)...简化,人工,简化。

+0

是的,这与我考虑的另一种方式类似:检查应用程序委托中的凭据,如果它们无效,则放置一个模式登录视图控制器。一旦他们登录,我会加载我的根视图控制器(一个UITabBarController)。我不喜欢这种方法的唯一原因是它基本上锁定了整个应用程序,并且可能有一些不需要被锁定的视图(比如说,只有一个选项卡)。也许这不是一个交易破坏者。 – markquezada 2011-06-12 09:49:29

+0

您可以启用/禁用选项卡栏中的选择性选项卡项目。当网络不可用时,我使用它来关闭部分应用程序。因此,运行您的支票并禁用这些标签,直到他们登录。其余的标签仍然可用。 – 2011-06-14 03:43:19

在objective-c中,你只能从一个超类继承。没有办法继承多个类。您可以尝试其他方法,例如可以将AuthenticatedViewController保留在appDelegate中,并且可以从任何类访问它,因为appDelegate是单例类。这样你就可以实现你想要的功能。

+0

我试图远离单身的方式,因为它感觉有点不雅,但也许我错了。我是iOS开发的新手,所以我想看看是否有其他人用来实现这种事情的更好的通用方法。感谢您的输入。 – markquezada 2011-06-12 09:52:57