Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从UITableView获取UITableViewController_Objective C_Uitableview_Uirefreshcontrol - Fatal编程技术网

Objective c 从UITableView获取UITableViewController

Objective c 从UITableView获取UITableViewController,objective-c,uitableview,uirefreshcontrol,Objective C,Uitableview,Uirefreshcontrol,我有一个连接了UIViewController的UIView。作为子视图(通过interface builder构建),我有一个UITableView。我想向UITableView添加一个刷新控件,但要做到这一点,我需要在表视图后面获得默认控制器 是否有一种UITableView方法可以从中获取与其关联的UITableViewController?不幸的是,在实例化之后,如果不子类化和设置委托,就无法访问UITableView的控制器(但我强烈建议不要这样做)。最好是在UITableViewCo

我有一个连接了UIViewController的UIView。作为子视图(通过interface builder构建),我有一个UITableView。我想向UITableView添加一个刷新控件,但要做到这一点,我需要在表视图后面获得默认控制器


是否有一种UITableView方法可以从中获取与其关联的UITableViewController?

不幸的是,在实例化之后,如果不子类化和设置委托,就无法访问UITableView的控制器(但我强烈建议不要这样做)。最好是在UITableViewController中设置刷新控件(如果可能,请使用代码),该控件已链接到IB中的表视图

要向尚未由UITableViewController控制的UITableView添加刷新控件,可以执行以下操作

首先,创建UITableViewController来管理控件

UITableViewController *tableViewController = [[UITableViewController alloc] init];
tableViewController.tableView = self.tableView;
创建控件,添加刷新后管理UITableView状态的目标,然后将其分配给刚刚创建的tableViewController

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refreshControlValueChanged:) forControlEvents:UIControlEventValueChanged];
tableViewController.refreshControl = refreshControl;

最后要做的是在UIViewController中实现
refreshControlValueChanged:

我没有在IB中链接UITableViewController。我有一个自定义UIViewController链接到根视图,但表视图是此根视图的子视图。在这一点上我将如何进展?我假设您的UITableView为数据源和UITableViewDelegate设置了一个委托。如果您已将其设置为ViewController,则您已经有了对它的引用(通过委托)。@Anand我确实有一个委托集。委托是我使用的自定义UIViewController,而不是UITableViewController。我如何从那里访问它?@Anand这是真的。我有一个UIViewController,其中一个视图以tableview作为子视图。那么,此时如何在表上设置refreshControl呢?除了这种方法之外,还可以将UITableViewController添加为childViewController。根据文档,UITableViewController已经包含了它。UIView和UIViewController之间存在混淆。UITableView没有关联的UITableViewController实例。它只有一个委托和一个数据源,它们通常是一个视图控制器。UITableViewController只是一个方便的类,用于减少UIViewController的设置。但它本质上仍然是一个UIViewController。