1

我是 IOS 和 XCode 的绝对初学者,而且我正在使用 Xcode 在内置于 Windows7 下运行的 Vmware 中的 Yosemite 中进行第一次尝试(客户是 MAC 优胜美地,主机是运行 vmware 工作站 9 的 Windows)

我的 IOS 项目中有一个 ViewController 类,声明如下:

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {...}

现在我想实现协议 UIViewController 和 UITableViewDelegate 的必要方法。

在一个教程中

http://jamesonquave.com/blog/developing-ios-apps-using-swift-tutorial/

它说我必须在协议上使用 Command+Click 来显示应该实现哪些方法。

我不知道如何用我的 vmware 执行“命令+单击协议”。

任何提示?

使用 Alt+单击协议时,它会向我显示帮助。如果我是 WindowsButton+单击协议,它会打开一个带有协议源代码的新窗口。现在如何显示应该实现的方法。

4

2 回答 2

1

为了帮助你, UIViewController 是一个你正在继承的类。它不是一个协议,因此它没有任何必要的方法供您实现。但是,您可以覆盖您继承的方法,这是您第一次创建文件时看到的,例如。

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

这会覆盖您从 UIViewController 继承的方法。如果您除了调用之外什么都不做,super.viewDidLoad()您可以从代码中删除整个函数。

现在 UITableViewDataSource 和 UITableViewDelegate 或两个协议,所以他们可能有也可能没有需要的方法来实现。

您在 alt-click 时描述的内容与您右键单击 UITableViewDataSource 并选择跳转到定义时相同。这是您在实际的 Mac 上单击命令时得到的结果。本教程所说的是,所需的方法将位于顶部,如果您查看文档,情况并非总是如此(因为这些方法是按目的组织的)。在 UITableViewDataSource 的情况下,您应该会看到如下内容:

protocol UITableViewDataSource : NSObjectProtocol {

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int

// Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier:
// Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls)

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell

optional func numberOfSectionsInTableView(tableView: UITableView) -> Int // Default is 1 if not implemented

optional func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? // fixed font style. use custom view (UILabel) if you want something different
optional func tableView(tableView: UITableView, titleForFooterInSection section: Int) -> String?

您会注意到前两种方法func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Intfunc tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell没有可选的。这意味着这些是该协议所需的方法。下面的可选的是可选的。

在 UITableViewDelegate 的情况下,您会看到没有非可选方法,因此它不需要您实现任何方法。

于 2015-02-09T17:44:25.490 回答
0

当您单击协议名称以跳转到其定义时,您正在做正确的事情,这基本上只是您可以复制并粘贴到代码中的所有方法的列表


编辑以下内容用于更改键盘:


您可以尝试像这样交换密钥:

我不喜欢放置外部源链接,因为它们有时会消失,所以下面是他们如何做的文字:

要交换 Option/Alt 键和 Command/Windows 键:

Fusion 2.x 及更高版本

  1. 转到 VMware Fusion > 首选项。
  2. 单击键盘和鼠标,然后单击键映射。
  3. 找到具有 Mac Shortcut of Option 的行,然后双击它进行编辑。

    • 如果您没有看到此行,请单击 + 按钮,然后在键的顶行中选择选项。
  4. 在键的底行中的 To 映射中,确保未选择 Alt 并且选择了 Windows 徽标。这将确保按下 Option 键会将 Windows 键发送到虚拟机。

  5. 单击确定。
  6. 找到具有 Mac Shortcut 命令键徽标的行,然后双击它进行编辑。

    • 如果您没有看到此行,请单击 + 按钮,然后在键的顶行中选择命令键徽标。
  7. 在底行键的 To 映射中,确保未选择 Windows 徽标并且选择了 Alt。这将确保按下 Command 键会将 Alt 键发送到虚拟机。单击确定。

融合 1.x

  1. 关闭您的虚拟机并退出 Fusion。
  2. 导航到 [Macintosh HD]//Library/Preferences/VMware Fusion
  3. 按住 Ctrl 键单击配置文件并选择打开方式。
  4. 选择文本编辑并单击打开。添加行:

    -mks.keyboard.swapAlt = TRUE

当您的虚拟机启动时,Option/Alt 键和 Command/Windows 键是相反的。

于 2015-02-09T16:26:26.860 回答