我想显示表格视图和上面我有一些按钮要显示... 哪种类型的应用程序更好地实现这一点,它必须支持导航......
我尝试过基于导航的应用程序,但它不允许在根视图控制器中移动表视图...
答案 0 :(得分:1)
选择用于生成初始应用程序的模板时,纯粹使用“应用程序类型”。生成应用程序后,您可以随意使用结构执行任何操作。
由于您说您需要导航(推送,弹出视图控制器,导航栏中有后退按钮),您应该从基于导航的应用程序模板开始。这将生成一个应用程序,其中root-view-controller基于UITableViewController。
现在,对于UITableView上方的按钮。这里有几个选项:
1)将按钮放在导航栏中。在导航栏的右侧添加一个按钮很容易:
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle: @"My Button" style: UIBarButtonItemStyleBordered target: self action: @selector( onMyButton: )] autorelease];
}
添加多个按钮稍微困难但可以完成。
2)将按钮放在UITableView标题中。在root-view-controller的nib中,创建一个新视图(大小约为320x100)并添加按钮。将它附加到RootViewController中的UIView * IBOutlet,称为“_buttonContainer”,声明如下:
@interface RootViewController : UITableViewController
{
IBOutlet UIView* _buttonContainer;
}
然后,在viewDidLoad中,使buttonContainer查看表格的标题:
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.tableHeaderView = _buttonContainer;
}
这会将您的按钮放在tableView行的上方,但滚动表视图时按钮会滚动。别忘了连接你的按钮。
3)这是我认为你试图实现的选项 - 即将整个tableview向下移动并在其上方放置按钮。要做到这一点,不要使用UITableViewController作为rootViewController的基础。 UITableView是控制器的视图,它用于填充屏幕/窗口(在任何其他容器视图控制器中......)。相反,向项目添加一个新的基于UIViewController的类(确保选择“With XIB for user interface”,并取消选择“UITableViewController子类”)。在界面构建器中,将按钮拖到视图上,并将新的UITableView拖到视图上 - 并根据需要定位所有内容。连接tableview数据源并委托给视图控制器对象(即“文件所有者”对象)。
现在,在类定义中,您需要声明新的ViewController是tableview委托和数据源:
@interface MyNewRootViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
}
@end
并且,您需要添加最小的数据源方法集以支持tableview:
@implementation MyNewRootViewController
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return 0;
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell...
return cell;
}
连接你的按钮,这就是它......你可以更新MainWindow.xib以使用新的rootviewcontroller而不是旧的。>