添加的tableview下的按钮(Add buttons under a tableview)

2019-07-30 18:25发布

我试图以编程方式创建一个视图。 我想有结果是一个内部的tableview滚动视图。 这桌子底下查看我想添加一些按钮

我不知道究竟该怎么做,我试过,但它不工作:

- (void)loadView {
    [super loadView];

    tableView = [[UITableView alloc] initWithFrame:[[self view] bounds] style:UITableViewStyleGrouped];
    [tableView setDelegate:self];
    [tableView setDataSource:self];

    scrollView = [[UIScrollView alloc] initWithFrame:[[self view] bounds]];
    //[scrollView setBackgroundColor:[UIColor blackColor]];
    [scrollView setBouncesZoom:YES];

    deconnectButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
    [deconnectButton setTitle:@"Deconect" forState:UIControlStateNormal];
    [deconnectButton setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal];

    //[deconnectButton addTarget:self action:action forControlEvents:UIControlEventTouchUpInside]; 
    deconnectButton.frame = tableView.frame;
    NSLog(@"Tableview frame : %@", NSStringFromCGRect(tableView.frame));

    [scrollView addSubview:deconnectButton];

    [scrollView addSubview:tableView];


    [[self view] addSubview:scrollView];


}

我在想什么或做错了什么?

Answer 1:

其实我找到了解决办法。 在tableview中有一个名为tableFooterView属性。 所有您需要做的是:

- 创建一个UIView - 添加一个按钮,该视图设置-Finaly它放在tableFooterView

下面是代码:

tableView = [[UITableView alloc] initWithFrame:[[self view] bounds] style:UITableViewStyleGrouped];
[tableView setDelegate:self];
[tableView setDataSource:self];

// create a UIButton (Deconnect button)
UIButton *btnDeco = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btnDeco.frame = CGRectMake(0, 0, 280, 40);
[btnDeco setTitle:@"Déconnecter" forState:UIControlStateNormal];
btnDeco.backgroundColor = [UIColor clearColor];
[btnDeco setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal];
[btnDeco addTarget:self action:@selector(deconnect:) forControlEvents:UIControlEventTouchUpInside];

// create a UIButton (Change pseudo button)
UIButton *btnChange = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btnChange.frame = CGRectMake(0, 50, 280, 40);
[btnChange setTitle:@"Changer Pseudo" forState:UIControlStateNormal];
btnChange.backgroundColor = [UIColor clearColor];
[btnChange setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal];
[btnChange addTarget:self action:@selector(changePseudo:) forControlEvents:UIControlEventTouchUpInside];


//create a footer view on the bottom of the tabeview
UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(20, 0, 280, 100)];
[footerView addSubview:btnDeco];
[footerView addSubview:btnChange];

tableView.tableFooterView = footerView; 
[footerView release];

[[self view] addSubview:tableView];


Answer 2:

有一点要注意的是,UITableView的是的UIScrollView的子类,所以你可能将不得不比如果你只是让它做不同的滚动管理的UITableView的大小。

您的代码似乎设置的tableView和deconnectButton相同的尺寸和大小是滚动视图上海华盈的大小。 我希望它可以拥有的tableView的模糊按钮的影响。

根据你描述它听起来像你应该计算需要什么表的大小是基于它的内容,然后相应地设置其框架。 然后设置按钮的帧是仅低于。 此外,您将需要使用它的contentSize属性设置滚动视图的大小。 在这种情况下的问题是,你必须始终保持滚动视图的大小和按钮的同步与的tableView的大小,位置。

你可能会做调查的最后一行在表中的按钮,并消除外滚动视图。 到底可能导致更少的代码。



Answer 3:

如果你有UITableView的一个UINavigationController内,你可以在你的底部设置工具栏项目UITableViewController / UIViewController

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:nil action:nil];
self.toolbarItems = @[barButton];

请记住要显示工具栏,以及这样的:

self.navigationController.toolbarHidden = NO;

//or animated
[self.navigationController setToolbarHidden:NO animated:YES];

这可能比你的黑客如下表视图清洁。



文章来源: Add buttons under a tableview