首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法使用macOS填充xib创建的swift tableView

在使用Xcode进行开发时,我们可以通过填充XIB文件来创建Swift的TableView。然而,如果你使用的是macOS系统,可能会遇到无法填充XIB文件的问题。这是因为macOS系统默认不支持使用XIB文件创建Swift的TableView。

解决这个问题的方法是使用纯代码来创建TableView,而不是使用XIB文件。下面是一个示例代码,展示了如何使用Swift在macOS上创建一个TableView:

代码语言:txt
复制
import Cocoa

class ViewController: NSViewController, NSTableViewDelegate, NSTableViewDataSource {
    
    @IBOutlet weak var tableView: NSTableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 设置TableView的代理和数据源
        tableView.delegate = self
        tableView.dataSource = self
        
        // 注册TableView的Cell
        tableView.register(NSNib(nibNamed: "CustomCell", bundle: nil), forIdentifier: NSUserInterfaceItemIdentifier(rawValue: "CustomCell"))
    }
    
    // MARK: - NSTableViewDataSource
    
    func numberOfRows(in tableView: NSTableView) -> Int {
        // 返回TableView的行数
        return 10
    }
    
    func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
        // 返回TableView的Cell视图
        let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "CustomCell"), owner: self) as! CustomCell
        
        // 设置Cell的内容
        cell.titleLabel.stringValue = "Row \(row)"
        
        return cell
    }
    
    // MARK: - NSTableViewDelegate
    
    func tableViewSelectionDidChange(_ notification: Notification) {
        // 当TableView的选中项发生变化时调用
        let selectedRow = tableView.selectedRow
        print("Selected Row: \(selectedRow)")
    }
}

在上面的示例代码中,我们首先在Storyboard中创建一个ViewController,并将一个TableView拖拽到ViewController中。然后,我们将TableView与ViewController关联,并设置其代理和数据源为ViewController。接下来,我们需要创建一个自定义的Cell,可以通过创建一个新的XIB文件来实现,并将其与一个自定义的NSView子类关联。最后,我们在ViewController中注册这个自定义的Cell,并在数据源方法中返回正确的行数和Cell视图。

这样,我们就可以在macOS上使用纯代码创建Swift的TableView了。这种方法可以避免使用XIB文件时可能遇到的问题,并且更加灵活和可控。如果你需要进一步了解如何在macOS上进行开发,可以参考苹果官方文档和开发者社区的资源。

腾讯云提供了丰富的云计算产品和服务,可以满足各种开发需求。具体推荐的产品和产品介绍链接地址可以根据实际需求进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Jekyll-Admin-Mac 开发纪要-左侧菜单栏

现在 NSView创建时候不允许使用 XIB,我们自己新建一个 Xib。 名字叫做 SideMenuView.xib。 我们设置 SideMenuView大小为 205x1000。...我们设置刚才新建 NSView继承我们新建类 SideMenuView。 使用 Xib 加载试图 到这里,我们新建 NSView无法正常显示出来。...虽然系统 NSButton是符合图片加文字效果,但是却无法修改文字颜色。 我们创建一个类继承与 BaseView名字叫做 SideMenuItemView。...我们按照上文所描述方法创建一个 Xib文件。 我们设置 Xib里面的 NSView宽度为 205,高度为 49。其实我们这个宽度和高度会随着改变。...里面的 Dictionary属性 Keys无法作为正常 Array使用,我们需要用 Array()对其进行初始化。

2.1K10
  • Swift 书面 ToDo App

    下面的代码是使用全部Xcode Version 6.0.1 (6A317)书面。 因为当使用团队开发stroyboard在并购诸多不便时间,所有或使用.xib该文件准备ToDo App....想要实现效果例如以下: 步骤: 1、新建一个基于Singal View Application project,然后删掉storyboard,在新建两个新文件 Main.xib 和 Main.swift...作为基本ViewController,打开 Main.xib 将 File’s Ownerl类属性改为 Main(这样才干够将关联变量拖动到 Mian.swift )。...3、然后在Main.swift 中编写一下TableView 数据源和代理方法。这里我们用是 自己定义 Cell。...记得绑定(同步骤1),Add.xib UI例如以下: 为了在Main.swift 中接收到 Add.xib 中用户输入信息,我们在 Add.swift 定义一个协议。

    1.5K20

    iOS 面向协议方式封装空白页功能

    为了良好交互体验,相信大家在对待scrollView无数据时提示页都会使用一些第三方来定制,最典型就是使用DZNEmptyDataSet。...一、基本实现 1、创建协议 // MARK:- 空视图占位协议 public protocol LXFEmptyDataSetable { } 2、确定面向类 确定我们面向类,一般tableView...self scrollView.emptyDataSetSource = self } 4、设置数据源和代理 在3、定义功能方法中将delegate和source设置为了self ,而协议是无法遵守再次遵守其它协议...可以使用Cocoapods方式来安装使用 pod 'LXFProtocolTool' 我也将 iOS - Swift 面向协议编程(二) 中提及通过协议便捷加载xib功能也集成了进来。...' 创建这个库目的是为了通过协议方式来方便快捷地实现一些实用功能,目前功能不多,不过往后会逐渐增加,或许你有什么想实现功能也可以提出来,喜欢就给个Star鼓励下我吧 ?

    1.4K50

    在iOS中怎样创建可展开Table View?(上)

    .为不同功能app创建视图控制器经常是强制性,并且好几次都是有点让人退缩任务.然而,如果你只是使用可展开tableview,有时也可能避免创建视图控制器(以及在storyboard中它们各自场景...,创建可展开tableView是一个不错选择.使用可展开tableView,在任何情况下,只是向用户请求已经存在数据或是默认视图控制器,而没必要创建视图控制器.例如,有了可展开cell,...你是否使用可展开tableView,并不总是取决于你开发app性质.然而,通过继承UITableViewCell类以及创建额外xib文件,cell界面可以自定义,app外观和感觉通常不是一个问题...上面的这些属性,将会被用来描述每一个我们在tableView中有的cell.在app级术语,我们要做就是使用一个简单易用属性列表(plist)文件.在这个plist文件中,我们需要合适地填充这些在所有...在这一点上,我们通常会在我们工程中创建一个新plist文件,然后我们将开始填充合适数据.当然你也可以不这么做,你可以下载.plist文件.所以,下载它并把它添加到起始项目里去吧.设置所有cell属性需要大量空间

    1.8K50

    Swift| 基础语法(五)

    前言 总结下 swift基础语法,里面涉及到:常量&变量、Swift数据类型、逻辑分支、循环、字符串相关、数组和字典、方法书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift...Swift| 基础语法(一) Swift| 基础语法(二) Swift| 基础语法(三) Swift| 基础语法(四) Swift| 基础语法(五) 本文涉及: 纯代码创建应用根试图 UILabel...、UIButton、UIImageView使用 UITableView使用 UITableView使用 单例 从相册选择照片或者拍照 ---- 一、纯代码创建应用根试图 func application...} 在Swift中,创建tableViewCell方法可以分为两种创建tableView时候注册和需要使用时手动创建。先聊聊创建tableView时候直接注册cell: myTb?....//创建cell,不需要判断是否为空,当没有可重用cell时候会自动创建 let cell:MyNewTableViewCell = (tableView.dequeueReusableCell

    2K30

    iOS 9 Storyboard 教程(一下)

    选择Swift语言,然后点击下一步(Next)创建. ?....对于把刚才创建类连接到storyboard里自定义view controller,这是至关重要一步.不要忘记这一步,否则你刚创建类将不能使用!...这个table view应该会显示一列玩家名单,所以现在你需要为这个app创建一个数据模型—一个包含Player对象数组.使用Swift File模板在iOS/Source里为这个工程添加一个新文件....接下来,你需要把一个Player对象数组赋值给PlayersViewController.使用Swift File模板为开始,创建一个新文件,命名为SampleData.把它添加到SampleData.swift...在工程中添加一个新文件,使用Cocoa Touch Class模板.命名它为PlayerCell,并且把它作为UITableViewCell子类.不要勾选创建XIB选项,正如你在storyboard

    3.1K20

    Swift版本TableManager

    一、概述在OC轮子中,使用一个RETableviewManager轮子,核心原理是数据驱动页面,cell-item 一一对应,对UITableview页面的封装。...本人觉得项目使用效果还不错,因此写了个swift版本。TBD:目前还在持续完善中... 二、做了一些优化* Item 和 cell绑定,只支持registerClass方式。...鼓励先注册,后续直接复用使用,避免新人错误。 实际项目中使用nib或xib很少,基本都是纯代码编写,因此简化(实在有需要,后续再扩展)。...,新增didUpdate方法,同时方法新增入参item避免内部在使用属性。...三、基本使用方法1、自定义 SZTableViewCell 和 SZTableViewItem 子类class ImageTitleCell: SZTableViewCell { lazy var

    40160

    制作动态framework与静态framework那些坑

    我们使用xib方式创建tableView和cell以及一个viewcontroller 3 需要暴漏给外部使用h文件 好了基本工程已经出来了,现在我们来看看怎么玩这两种形式framework...我们此时可以将framework拖到工程中使用啦,但是xib对应此时是无法加载。为什么? 对于此时动态库来说,是在需要是动态载入 ?...对于这个库其实我们可以选择为Option形式,这样的话App启动时它是不会载入,只有当使用到时才会动态检测载入(这也是为啥称之为动态库啦),也正是因为此,我们main bundle中不包含xib编译后...nib文件,也就造成我们加载是产生资源无法找到crash 怎么验证我们说法呢?...其实啊,这个里面有个隐含问题:默认情况会搜素main bundle中医ViewController同名xib,而我们库需要加前缀才能定位,因此要手动使用加载nib方式创建我们Controller

    2K20

    swift学习笔记】三.使用xib自定义UITableViewCell

    使用xib自定义tableviewCell看一下效果图 1.自定义列 新建一个xib文件 carTblCell,拖放一个UITableViewCell,再拖放一个图片和一个文本框到tableviewcell...上 并给我们xib一个标识 为了学习,我这里xib和后台class是分开建。...我们再建一个cocoa touch class文件名称为CarCellTableViewCell继承自UITableViewCell 并把我们xib和新建CarCellTableViewCell建立联接...在CarCellTableViewCell里建立和xib图片和文本框输出 import UIKit class CarCellTableViewCell: UITableViewCell {...在main.storyboard上拖放一个uitableview,并在后台代码建立输出联接 1.在load事件里注册xib 2.在tableveiw方法里得到当前列,指定数据源。

    1.9K70

    【IOS开发基础系列】Storyboard专题

    但是,当你使用故事板时候,所有的UI 都放到了一个故事板中, MainWindow.xib 不再使用。         ...与使用 MainWindow.xib 时候不同,故事板中不会包含应用程序委托。...由于无法从nib中加载应用程序委托,也无法从故事板文件中加载应用程序委托,我们必须告诉UIApplicationMain 应用程序委托类名称,否则它根本无法找到应用程序委托类。...2 使用 2.1 结合xib使用     思路:         APP跳转流程在故事板中呈现,但是VC事件处理与详细视图设计放在xib文件中。     ...前者更为简单,因此我使用了前者。 注意:如果你事先无法确定 cell 高度,或者你有不同高度几种 cell,你应该使用heightForRowAtIndexPath。

    1.1K30
    领券