【问题标题】:Why can I not call my IBOutlet so that i can make it a Delegate in XCode 9.3为什么我不能调用我的 IBOutlet 以便我可以在 XCode 9.3 中使其成为代表
【发布时间】:2018-05-26 05:39:38
【问题描述】:

我正在尝试使 UITableView 委托,以便我可以在我的项目中使用它的属性。但我似乎无法调用我的 ToDoListTable IBOutlet 以便我可以通过执行 ToDoListTable.delegate = self 使其成为代表。我在下面附上了一张图片,显示 XCode 甚至没有建议它。所以我不确定我应该做什么。

【问题讨论】:

  • 为什么不在storyboard中连接table view的delegate和dataSource呢?但是如果你想在代码中做,你需要在viewDidLoad中做,而不是在类中的某个任意位置。
  • 哦!哈哈谢谢你!我对此很陌生,但我将如何在故事板中做到这一点?

标签: ios swift xcode uitableview delegates


【解决方案1】:

如果你想使用故事板给委托,那么请看附件。

你还没有给datasourceDelegateStoryBord 比 写在ViewDidLoad

tableview.delegate = self

tableview.dataSource = self

【讨论】:

    【解决方案2】:

    您需要在 viewdidload 中给代表,例如 ToDoListTable.delegate = self ToDoListTable.datasource = self

    【讨论】:

      【解决方案3】:

      在你的 ToDoListViewController 中添加这段代码 sn-p。

      func viewDidLoad() {
          super.viewDidLoad()
          ToDoListTable.delegate = self
          ToDoListTable.dataSource = self
      }
      

      您应该在 viewDidLoad() 方法中分配您的委托。还建议使用小驼峰式命名您的 IBOutlet 以便更好地进行代码练习。说命名 toDoListTableToDoListTable 好。

      【讨论】:

        【解决方案4】:

        您可以通过编写类似的方式以编程方式进行

        `toDoListTable.delegate = self` (just write it if you are not able to get the instance of tableview. sometime it's just xcode issue)
        

        或者使用情节提要并选择表格视图,点击连接检查器(最后一个)并将委托出口的连接添加到 Viewcontroller。

        【讨论】:

          【解决方案5】:

          在@IBOutlet 之后和var 之前需要“弱”

          @IBOutlet weak var tableView: UITableView!
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-11-13
            • 2011-09-23
            • 2011-03-05
            • 1970-01-01
            • 1970-01-01
            • 2014-08-15
            • 2010-09-12
            • 2019-09-24
            相关资源
            最近更新 更多