我是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源代码的新窗口。现在如何展示应该实施的方法。
答案 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) -> Int
和func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
在它们前面没有可选项。这意味着这些是此协议所需的方法。下面的可选项是可选的。
对于UITableViewDelegate,您将看到没有非可选方法,因此它不需要您实现任何方法。
答案 1 :(得分:0)
当您点击协议名称跳转到其定义时,您正在做正确的事情,这基本上只是您可以复制并粘贴到代码中的所有方法的列表
编辑 以下是更换键盘:
你可以尝试交换像this这样的键:
我不喜欢放置外部源链接,因为它们有时会消失,所以下面的文字是如何:
要交换Option / Alt键和Command / Windows键:
Fusion 2.x及更高版本
找到具有选项的Mac快捷方式的行, 然后双击它进行编辑。
在键的底行中的To映射中,确保Alt不是 选择并选择Windows徽标。这将确保 按Option键将Windows键发送到虚拟 机。
找到包含Mac快捷方式的行 命令键标识,然后双击它进行编辑。
在底行行中的To映射中确保Windows 未选择徽标并选择Alt。这将确保 按下Command键会将Alt键发送到虚拟键 机。单击“确定”。
Fusion 1.x
选择TextEdit,然后单击“打开”。添加以下行:
-mks.keyboard.swapAlt = TRUE
当您的虚拟机启动时,Option / Alt键和Command / Windows键会反转。