我有一个viewController,它有一个属性:UIScrollView
,同一个控制器包含一个tableView。我的UIScrollView
包含按钮。如何使用[tableView reloadData]
触摸其中一些按钮? tableView数据源和委托在viewController上。
MyViewController:
@property (strong, nonatomic) MyScrollView* scrollView;
@property (strong, nonatomic) IBOutlet UITableView *table;
MyScrollView类:
没有以编程方式创建属性和5个按钮。
答案 0 :(得分:3)
在更好地理解你想要做什么后,我想我会使用代表。虽然还有其他方法可以做到这一点,但我认为代表们很灵活,如果你还没有使用它们,那么这是了解它们的好时机。
如果希望采用我们的协议,我们定义一个类需要实现的委托方法: 的 MyScrollView.h 强>
@protocol MyScrollViewDelegate <NSObject>
-(void)reloadTableData;
@end
@interface MyScrollView : UIScrollView
@property (nonatomic,weak) id<MyScrollViewDelegate> delegate;
@end
然后在实施中我们执行以下操作:
<强> MyScrollView.m 强>
// Set the button's target
[button addTarget:self action:@selector(reloadData) forControlEvents:UIControlEventTouchUpInside];
// Here we check if our delegate responds to the reloadTableData selector and if so we call it
-(void)reloadData
{
if ([self.delegate respondsToSelector:@selector(reloadTableData)])
{
[self.delegate reloadTableData];
}
}
在MyViewController的实现中,我们添加MyScrollViewDelegate
并实现reloadTableData
方法:
<强> MyViewController.m 强>
@interface MyViewController () <MyScrollViewDelegate>
@property (strong, nonatomic) MyScrollView* scrollView;
@property (strong, nonatomic) IBOutlet UITableView *table;
@end
// Set the delegate after you've created scrollView
self.scrollView.delegate = self;
// Once the delegate is called we simply reload the table data
-(void)reloadTableData
{
[self.table reloadData]
}
答案 1 :(得分:0)
如果您的视图控制器包含两者表视图和带有多个按钮的滚动视图,您只需将表视图连接到也被声明为属性的IBOutlet,然后调用“{ {1}}“在该表视图属性上。
如果表视图位于包含按钮的对象的不同视图控制器或类中,则只需要指向包含表视图的单独视图控制器的某种指针。如果该表视图被声明为属性,您仍然可以通过执行类似“reloadData
”的操作来重新加载数据(假设该属性名为tableView,而指向另一个VC的指针名为theOtherViewController)。
答案 2 :(得分:0)
请按照以下方式重新加载表格数据
.h文件
@interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>{
IBOutlet UITableView *exTable1;
IBOutlet UITableView *exTable2;
}
@property (nonatomic, retain) UITableView *exTable1;
@property (nonatomic, retain) UITableView *exTable2;
给予.xib
的关系.m文件
@synthesize exTable1;
@synthesize exTable2;
// reload data when you need
[self.exTable1 reloadData];
// reload data when you need
[self.exTable2 reloadData];
答案 3 :(得分:0)
这很简单 -
viewController.m
// set up an action for your button
-(IBAction)yourButtonClick{
[yourtablename reloadData];
}