gpt4 book ai didi

ios - 在 View 类中编写 Controller 代码不是很 MVC 吗?

转载 作者:行者123 更新时间:2023-11-29 10:25:13 25 4
gpt4 key购买 nike

我有一个 UITableViewController 和自定义 UITableViewCell,当我点击单元格上的某个按钮时, Controller 应该推送到另一个 Controller 并呈现另一个 View 。

我可以为代码架构师想到两个解决方案。

  1. 第一个是我创建了一个协议(protocol)方法来对单元格中的点击事件使用react,并将 Controller 设置为委托(delegate),因此一旦我的单元格被点击, Controller 就会使用react以推送到另一个 View 。

  2. 但是我也可以像这样在我的单元类中做一些事情,而不是创建委托(delegate),我不断询问 nextResponder 它是否是带有 for 循环的正确 Controller ,一旦我得到它我用它来推送到下一个:

    @implementation MyCustomTableViewCell
    //...
    //...
    //...
    -(void)tappedOnSomeView
    {
    id obj = nil;
    for (obj = self; obj; obj = [obj nextResponder]) {
    if ([obj isKindOfClass:[MyTableViewController class]])
    {
    UIViewController *uiVC = (UIViewController *)obj;
    MyNextViewController *nextVC = [[MyNextViewController alloc] init];
    [uiVC.navigationController pushViewController:nextVC animated:YES];
    return;
    }
    }
    }
    //...
    //...
    //...
    @end

那么这不是很 MVC 吗?还是丑陋的代码?我是否应该只创建委托(delegate)来处理其 tableview Controller 中单元格上的所有手势事件?或者还有其他更好的方法吗?

谢谢。

最佳答案

您应该采用第一种方法。这样做的好处是您还可以将单元格中的一些数据传回 View Controller 。

另一种选择是你可以这样做

cellForRowAtIndexPath: 中,将目标添加到 View 以处理点击事件。通过这种方式,您可以直接捕获 View Controller 内点击的响应。但是,我会强调委托(delegate)的第一种方法。

关于ios - 在 View 类中编写 Controller 代码不是很 MVC 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32752801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com