我在导航控制器中嵌入了一个UITableViewController。我在导航栏下面放了一个工具栏来扩展它。它看起来像这样:
但是,当我向上滑动以查看更多表格视图单元格时,工具栏会在导航栏后面滑动并消失。当我移动表格单元格时,有没有办法将它永久地附加在导航栏下而不会移动它?
答案 0 :(得分:0)
如果您将子视图添加到UITableViewController
,则会滚动显示其内容。 UITableViewController
是显示全屏表的特定类型的ViewController
。
要将其他子视图添加为固定标头,您可以创建一个UIViewController
作为子视图的自定义UITableView
。然后,您可以实施协议UITableViewDataSource
和UITableViewDelegate
以获得UITableViewController
的功能。
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self;
self.tableView.dataSource = self;
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// change to data
return 5;
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// can also use custom cell from xib
var cell:UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("default");
if cell == nil {
cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "default");
}
cell!.textLabel!.text = "example";
return cell!;
}
}
还值得注意的是,如果您计划在故事板中的多个UIViewController
上使用此工具栏,则应使用容器视图指定并重复使用它的设计。
答案 1 :(得分:0)
将表格样式设置为 UITableViewStyleGrouped ,并使用以下方法将工具栏添加为部分标题:
import java.awt.Dimension;
import javax.swing.*;
public class Game extends JPanel {
private static final int PREF_W = 400;
private static final int PREF_H = 300;
private int prefW;
private int prefH;
public Game(int prefW, int prefH) {
this.prefW = prefW;
this.prefH = prefH;
}
public Game() {
this(PREF_W, PREF_H);
}
@Override
public Dimension getPreferredSize() {
if (isPreferredSizeSet()) {
return super.getPreferredSize();
}
return new Dimension(prefW, prefH);
}
private static void createAndShowGui() {
int height = 500;
int width =(int) (height*1.56); //height = 500, width = 780;
Game game = new Game(width, height);
JFrame frame = new JFrame("Game");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(game);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
System.out.println("Frame size: " + frame.getSize());
System.out.println("game size: " + game.getSize());
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> createAndShowGui());
}
}