如何显示特定协议的必要方法

时间:2015-02-09 16:10:04

标签: xcode vmware-fusion

我是IOS和XCode以及swift的绝对初学者,我正在使用在Windows 7下运行的Vmware中构建的Yosemite中首次尝试使用Xcode(来宾是MAC yosemite,主机是运行vmware工作站9的Windows)

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

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

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

在教程中

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

它说我必须使用Command + Click on protocoll来显示应该实现哪些方法。

我不知道怎么用我的vmware做“命令+点击协议”。

任何提示?

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

2 个答案:

答案 0 :(得分: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-单击时所描述的内容与右键单击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,您将看到没有非可选方法,因此它不需要您实现任何方法。

答案 1 :(得分:0)

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


编辑 以下是更换键盘:


你可以尝试交换像this这样的键:

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

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

Fusion 2.x及更高版本

  1. 转到VMware Fusion>喜好。
  2. 点击键盘&鼠标,然后是键映射。
  3. 找到具有选项的Mac快捷方式的行, 然后双击它进行编辑。

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

  5. 单击“确定”。
  6. 找到包含Mac快捷方式的行 命令键标识,然后双击它进行编辑。

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

  8. Fusion 1.x

    1. 关闭虚拟机并退出Fusion。
    2. 导航至[Macintosh HD] // Library / Preferences / VMware Fusion
    3. 按住Ctrl键并单击配置文件,然后选择打开方式。
    4. 选择TextEdit,然后单击“打开”。添加以下行:

      -mks.keyboard.swapAlt = TRUE

    5. 当您的虚拟机启动时,Option / Alt键和Command / Windows键会反转。