【问题标题】:Xcode: TableView cell to create ViewControllerXcode:创建 ViewController 的 TableView 单元格
【发布时间】:2017-09-28 09:03:19
【问题描述】:

我最近开始使用 Xcode 和 Beginner 来创建应用程序。我遇到了一些我想实施的东西,但研究还不是很清楚/很难理解。

我有一个 TableView 和 Days of Week 以及一个 segmentedControl,这些天重复了 3 次。我想知道如何让用户单击以将我带到另一个 ViewController,具体取决于它是哪一天以及选择了 segmentedController 的哪个段,而无需在情节提要中创建 21 个视图控制器。

我使用了一个 ViewController 并为这个设置创建了一个 tableView 的出口。

【问题讨论】:

    标签: ios swift xcode app-store


    【解决方案1】:

    在你的 tableview 委托方法中 -> didSelectedRowAtIndexPath

    you can simply write 
    let vc = UIViewController()
    /*
    you can add informations here 
    */
    present(vc, animated: true)
    

    在此方法中,您可以使用indexPath 来获取您点击的单元格

    let cell = tableView.cellForRowAt(indexPath)
    

    现在您可以获取此单元格中的信息

    【讨论】:

    • 这个解决方案看起来很简单,在我的理解范围内。我用我的代码创建了一个 pastebin:pastebin.com/qRaHsftd,如果我使用 tableView 作为插座,我将如何实现这个解决方案?
    • 您应该像实现 cellForRowAtIndexPath 方法一样实现 didSelectedRowAtIndexPath,
    • 太棒了!明白了!
    • 既然你有数据源workout_days,你就可以得到这一天->让didSelectedRowAtIndexPath中的day =锻炼天[indexPath.row]现在你得到你点击的数据
    【解决方案2】:

    您可以拥有一个视图控制器,它基本上是您想要访问的视图控制器的配方。

    例如,您希望显示一个带有标签的视图控制器,该标签说明了分段控件中的数字和用户点击的日期的组合。

    如果你现在创建一个 ViewController,它在 storyboard 中有一个标签,标签上的文本无关紧要,你可以使用代码将文本更改为你想要的任何内容。

    在 tableviewcontroller 中,您可以使用 tableview 的 didSelect 委托方法来呈现 viewcontroller 并将标签设置为分段控件和被点击的单元格的值。

    我认为您只需要更多有关 iOS 和一般编程的信息,因此我建议您观看以下 iTunes U 课程:
    https://itunes.apple.com/us/course/developing-ios-10-apps-with-swift/id1198467120
    它有你需要知道的一切

    【讨论】:

    • 谢谢。所以在这个配方视图控制器中,假设我有一个输入字段供用户更改标签,这个文本是否只会出现在他们选择的给定日期和段上?如果他们选择去另一个屏幕然后回来,这家商店也会在那个特定的日子/细分市场吗?
    • 不,如果您使用常规方式呈现视图控制器并且您返回视图控制器信息“丢失”,如果您想存储数据,您应该在另一个类中进行,您应该谷歌搜索有关 mvc(模型视图控制器)的更多信息,它是一种帮助您分离视图和逻辑的设计范例
    【解决方案3】:

    使用两个变量(例如 - dayName 和 selectedSegmentIndex)创建一个详细视图控制器。并在您当前的 viewController "tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)" 中使用这些详细信息推送 detailsViewController

    let objViewController: DetailsViewController? = UIStoryboard.mainStoryboard().instantiateViewController(withIdentifier: "DetailsViewController") as? DetailsViewController
        objViewController?.dayName = dayName
        objViewController?.selectedSegment = segmentControl.selectedSegmentIndex
        navigationController?.pushViewController(objViewController ?? UIViewController(), animated: true)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      相关资源
      最近更新 更多