我正在尝试将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
方法中实施了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
我不知道是否错过了一些重要细节,但桌面视图不会出现在自定义键盘中,我添加了背景颜色和单元格来表示它。
答案 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天内对此进行了广泛的工作。