- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
昨天我发布了this question所以我的问题的结构的所有代码都可以在那里找到。
问题......这一次
我是从其他语言转向 OBJ-C 的,一些 OOP 结构让我有点畏缩(我不喜欢将每个可能的函数打包到一个 UIViewController
中,有些人似乎这样做)。我原本打算做一个整页UITableViewController
带有嵌入式NavigationController
然而,这个项目的用例不允许我使用默认的导航栏。所以我必须放入自己的导航栏并使用常规的 UITableView
(调整大小到几乎全屏)而不是更简单的选项,UITableViewController
...(我知道这一切都可以通过使用它来解决,但我不能)
相反,我有一个常规的 UIViewController
拥有包含我自己的自定义属性 TasksTableView.h
子类。子类扩展UITableView
如我上面发布的链接所示。
实际问题是我似乎无法从这个 UITableView
内部继续或更改 View 。因为这样做的每个函数似乎都需要来自 UIViewController
类。
我已经尝试过
在didSelectRowAtIndexPath
中调用手动segue我的方法UITableView
子类。
[self performSegueWithIdentifier:@"profile" sender:sender];
这会产生一个明显的错误,告诉我 performSegueWithIdentifier
这个类中不存在,它不存在,所以没关系。显然它属于UIViewController
实例化我的类 UITableView
子类...
我尝试导入实际呈现并保存 TableView 子类本身属性的 View Controller ,并尝试将 View 推送到堆栈。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *target = [storyboard instantiateViewControllerWithIdentifier:@"SingleTaskViewController"];
AllTasksViewController *allTasksView = [[AllTasksViewController alloc] init];
if(target) {
[target setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[allTasksView presentViewController:target animated:YES completion:nil];
}
}
这给了我错误 Warning: Attempt to present <SingleTaskViewController: 0x7fa15d5359f0> on <AllTasksViewController: 0x7fa15d5363c0> whose view is not in the window hierarchy!
...尽管它必须位于层次结构中,因为它是包含并实例化此 UITableView
的 View .
我还尝试手动调用 didSelectRowAtIndexPath
来自 UIViewController
持有 UITableView
子类,但又是同样的事情。它调用了,但显然因为我必须传递索引,所以是我选择它而不是表告诉我实际选择了什么。
我想要什么
我真的很想保留 UITableView
子类独立于 UIViewController
并且不将委托(delegate)方法和协议(protocol)引入 View Controller 。我更愿意将逻辑分开。我所需要的只是一种方法来继续或转换到相关的单一任务 View ,并发送一些有关按下的内容的数据。
最佳答案
那里有很好的教程,但基本思想是......
当主 vc 加载时,它创建 Datasource 和 Delegate 类的实例,并将它们分配给 TableView 。
它还“符合”Delegate 类中的自定义协议(protocol)。这允许 Delegate 类在点击一行时“回调”到主 vc。
我整理了一个非常简单的示例来演示这种方法,可以在此处看到:https://github.com/DonMag/OCTableViewExample
关于ios - Objective-c 如何从 UITableView 子类中进行 Segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44677847/
我是一名优秀的程序员,十分优秀!