objective-c - 表格重新加载后设置 UITableView FooterView

标签 objective-c ios xcode uitableview

我正在制作一个作为 UITableView 的应用程序,它从 Web 获取内容、解析它并显示它。获取和解析它需要一些时间,所以我使用加载指示器 ( MBProgressHUD ) 并在后台进行加载。我想在 TableView 的底部添加一个按钮,所以我编写了这段代码:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[myButton addTarget:self action:@selector(myAction)
   forControlEvents:UIControlEventTouchDown];
[myButton setTitle:@"Button Title" forState:UIControlStateNormal];
myButton.frame = CGRectMake(0, 0, 160.0, 40.0);
self.tableView.tableFooterView=myButton;

问题是它是在我的后台内容加载代码之后的 ViewDidLoad() 期间在 tableview 中初始化的

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    hud.mode = MBProgressHUDModeIndeterminate;
    hud.labelText = @"Loading";
    dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
        // Do something...
        [self getContent];
        [self.tableView reloadData];
        dispatch_async(dispatch_get_main_queue(), ^{
            [MBProgressHUD hideHUDForView:self.view animated:YES];
        });
    }); 

所以当 View 加载时,按钮设置在顶部(因为 tableview 是空的)并且当它重新加载时,按钮保持在顶部,我需要转到另一个 View 并返回以在页脚中放置按钮.

有没有办法在内容加载后设置按钮?像一个 -(void)tableViewDidReloadData 函数?

谢谢!

最佳答案

是的,如果您在与 [self.tableView reloadData] 相同的调用中执行此操作(这是一个同步调用),它将在加载数据后显示。

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeIndeterminate;
hud.labelText = @"Loading";
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
    // Do something...
    [self getContent];
    dispatch_async(dispatch_get_main_queue(), ^{
        [MBProgressHUD hideHUDForView:self.view animated:YES];
        [self.tableView reloadData];
        UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [myButton addTarget:self action:@selector(myAction) forControlEvents:UIControlEventTouchDown];
        [myButton setTitle:@"Button Title" forState:UIControlStateNormal];
        [myButton setFrame:CGRectMake(0, 0, 160.0, 40.0)];
        [self.tableView setTableFooterView:myButton];
    });
});

关于objective-c - 表格重新加载后设置 UITableView FooterView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10522638/

相关文章:

IOS 自定义键盘。如何在自定义键盘中设置特殊字符

android - 我想用 PhoneGap 创建一个 Objective-C 组件

ios - 如何检测 UIWebView 中显示的本地 pdf 中的超链接

objective-c - 以编程方式创建布局约束

swift - UIButton 区域的一部分未触发 func attemptsBegan

ios - Storyboard:启用高级 UI 配置

ios - 为什么有些字符串在数组中显示有引号而有些没有?

objective-c - Apple 的 Sample MVCNetworking 中的 Singleton Class NetworkManager 是否正确?

ios - 拒绝某些 UIViews 旋转

ios - Xcode 5,如何在所示场景中使用带有方向的自动布局?