从 UIViewController 子类化时如何访问 UITableViewController 属性?

发布于 2024-12-11 13:14:05 字数 574 浏览 0 评论 0原文

我对 UIViewController 进行了子类化,为所有 UIViewController 提供通用功能(例如,我重写了 viewDidLoad 方法)。我的应用程序使用一堆视图控制器,这些视图控制器排列在选项卡栏控制器和导航控制器内。一切都很好,除了我有一个 UITableViewController。我想继承的不是它,而是我的自定义 MyUIViewController。我可以通过实现数据源和委托协议来使表正常工作:

@interface MaschinenTableViewController : MyUIViewController <UITableViewDataSource, UITableViewDelegate>

但是在这种情况下,我无权访问 UITableViewController 属性。例如,我无法更改表行选择的行为,因为 self 是 MyUIViewController 而不是 UITableViewController:

self.clearsSelectionOnViewWillAppear = YES; 

是否有访问这些属性的解决方法?

I have subclassed UIViewController to provide common functionality for all UIViewControllers (for example I'm overriding viewDidLoad method). My app uses a bunch of view controllers that are arranged inside tab bar controller and in navigation controllers. Everything is OK, except the fact I have one UITableViewController. I would like to subclass not it but my custom MyUIViewController. I'm able to get the table working by implementing data source and delegate protocols:

@interface MaschinenTableViewController : MyUIViewController <UITableViewDataSource, UITableViewDelegate>

However in this case, I do not have an access to UITableViewController properties. For example, I cannot change the behavior of table row selection because self is MyUIViewController not UITableViewController:

self.clearsSelectionOnViewWillAppear = YES; 

Are there any workarounds for accessing those properties?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

池予 2024-12-18 13:14:06

您还可以将 UITableViewController 子类为 MyUITableViewController,实现您想要的行为,然后将 MyUITableViewController 作为变量放入 MyUIViewController。

You could also subclass UITableViewController as MyUITableViewController, implementing the behavior you want, and then put a MyUITableViewController as variable to your MyUIViewController.

耀眼的星火 2024-12-18 13:14:06

Did the same as Simon Lee mentioned using the delegate.
But without storing the index anywhere, at the end of didSelectRowAtIndexPath method called the deselectRowAtIndexPath. Worked for me no issues so far.

长安忆 2024-12-18 13:14:05

在这种情况下,您需要将 UITableView 变量添加到标题中,并在 viewDidLoad 中对其进行适当设置,然后将其添加到您的视图中。从这一点来看,它将像 UITableViewController 一样工作(本质上这就是它所做的一切!)

看看 我的文章采用了这种方法。

In this case you will need to add a UITableView variable to the header and set it up appropriately in viewDidLoad, and add it to your view. From this point it will work as a UITableViewController will (as essentially that's all it does!)

Take a look at my article here which takes this approach.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文