当前位置: 首页 > 面试题库 >

如何以编程方式设置UITableView的dataSource?

伍皓
2023-03-14
问题内容

我有一个奇怪的问题。我试图以编程方式将dataSource分配给表。

我已UITableView使用界面生成器在ViewController中为其创建了一个和IBOutlet。我创建了一个实现的类UITableViewDataSource。我将dataSource表的设置为dataSource的实例。一切都会编译并正常运行,直到设置dataSource的行在运行时执行。

错误是Thread 1: EXC_BAD_ACCESS (code=EXC_i386_GPFLT)并且class AppDelegate定义线突出显示。

class ViewController: UIViewController {

    @IBOutlet weak var table: UITableView!

    override func viewDidLoad() {
        let ds = MyData()
        table.dataSource = ds // <---- Runtime error
        table.reloadData()
        super.viewDidLoad()
    }
    // ... other methods
}


class MyData: NSObject, UITableViewDataSource {
    func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
        return 5
    }
    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
        let cell = UITableViewCell()
        cell.textLabel.text = "a row"
        return cell
    }
}

有什么想法为什么我得到这个运行时错误?我正在Swift中使用XCode 6 beta 4。


问题答案:

将您的代码更改为:

class ViewController: UIViewController 
{
    @IBOutlet weak var table: UITableView!
    var dataSource: MyData?

    override func viewDidLoad() 
    {
        super.viewDidLoad()

        dataSource = MyData()
        table.dataSource = dataSource!
    }
}

您的应用程序中断,因为返回时会ds立即将其释放viewDidLoad。您必须保留对数据源的引用。



 类似资料:
  • 问题内容: 我的问题很简单 如何以编程方式设置我的按钮layout_gravity? 我在互联网上找到了它,但它只是抛出了一个Nullpointer异常: 有什么办法吗? 问题答案: Java Kotlin 有关重力值以及如何设置重力,请检查“重力”。 基本上,您应该选择依赖于父项。可以是等等。

  • 问题内容: 这个问题类似于: jsf:在UI中绑定到inputtext的integer属性在提交时设置为零 但是我对解决方案并不完全满意。上下文是相同的:我有一个Web表单,需要一个Integer值。如果文本框为空,我希望我的Integer字段为“null”,但是EL Parser会自动将我的id字段设置为“ 0”。 我可以通过在本地Tomcat VM中设置JVM参数来解决此问题: -Dorg.a

  • 服务器时间在单击按钮事件中自动设置为我的设备。

  • 问题内容: 我正在使用来自Android百分比支持包的PercentRelativeLayout。这就是我的布局。 我想以编程方式更改高度。我该如何使用或其他方式进行操作。 问题答案: 您要设置一个新的百分比值吗?如果是,则需要:

  • 我对使用Swift的UIKit相对较新。目前,我正在尝试制作一个简单的UITableView,其中包含每个单元格的几个UILabels(纯粹以编程方式),尽管我在尝试这样做时遇到了很多麻烦。我的代码如下: 这是当前在模拟器中显示的内容。 这是我想看到的。 我如何着手改变我先前存在的代码以得到我所寻求的最终结果?我有一种感觉,这与我的代理或数据源有关,但无论我做什么,我似乎总是迷路。任何帮助都将不胜

  • 有没有办法以编程方式自定义这些TextInputLayout属性: textColorHint 彩色口音 颜色控制正常 颜色控制已激活 文本选择句柄 我知道如何使用主题属性对它们进行样式化,但是我正在处理的项目动态地加载颜色信息,据我所知,在运行时无法更改主题/样式值。