首页
学习
活动
专区
工具
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 Owner的l类属性改为 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.5K50

    在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

    40360

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

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

    2.1K20

    【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的方法里得到当前的列,指定数据源。

    2K70

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

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

    1.3K30
    领券