1

我正在尝试UITableView在 iOS8 中添加自定义键盘。由于键盘没有像故事板这样的接口文件,我需要以UITableView编程方式添加,但它不会出现。
viewDidLoad我这样做:

self.tableView = UITableView(frame: CGRectMake(0, 0, view.frame.width, view.frame.height), style: UITableViewStyle.Plain)
tableView.delegate = self;
tableView.dataSource = self;
self.view.addSubview(self.tableView)
tableView.reloadData()

然后我实现了numberOfSectionsInTableViewand numberOfRowsInSection,在cellForRowAtIndexPath我这样做的方法中:

        var cell = tableView.dequeueReusableCellWithIdentifier("CopyCell", forIndexPath: indexPath) as UITableViewCell
    if let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("CopyCell", forIndexPath: indexPath) as? UITableViewCell {
        cell.textLabel!.text = "Hello World"
        cell.backgroundColor = UIColor.redColor()
    }else{
        cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "CopyCell")
        cell.textLabel!.text = "Hello World"
        cell.backgroundColor = UIColor.redColor()
    }
    return cell

我不知道我是否遗漏了一些重要的细节,但是表格视图不会出现在自定义键盘中,我添加了背景颜色和单元格来指示它。

4

2 回答 2

1

我能够通过以下方式做到这一点:

1)将tableview添加到XIB文件

2) 将 XIB 的 File 的所有者类分配给 KeyboardViewController

3) 将委托和数据源连接到文件的所有者

4) 在您的 KeyboardViewController.m 中为 tableview 创建一个插座并将其连接到 XIB 文件中

从那里你必须确保为 tableView 的单元格注册一个类:

[self.tableView registerClass:[UITableView class] forCellReuseIdentifier:@"cell"];

您还需要确保包含此 init 方法:

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:@"Keyboard" bundle:nibBundleOrNil];
    return self;
}

从那里您可以正常在 KeyboardViewController 中实现表的委托方法,您将看到更改。如果您需要任何帮助,请随时与我们联系,因为过去 2 天我在这方面进行了广泛的工作。

于 2014-11-23T22:15:55.123 回答
0

您只能将 UITableView 与 XIB 一起使用,您不能以编程方式添加它。

于 2014-10-22T19:16:48.033 回答