将UITableView添加到iOS 8自定义键盘

时间:2014-10-14 18:43:25

标签: ios uitableview swift ios-app-extension custom-keyboard

我正在尝试将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()

然后我在numberOfSectionsInTableView方法中实施了numberOfRowsInSectioncellForRowAtIndexPath

        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

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

2 个答案:

答案 0 :(得分:0)

只有不能以编程方式添加UITableView才能使用UITableView。

答案 1 :(得分:0)

我能够通过以下方式实现这一目标:

1)将tableview添加到XIB文件

2)将XIB的文件所有者类分配给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天内对此进行了广泛的工作。