我有两个班级A& B,在A类中我有mapView和一个按钮点击该按钮我想在地图上加载B类的tableView,我还需要在A类中设置B类TableView的框架 一切都是在不使用故事板的情况下编写的。请提前帮助我。
在Class A的ViewDidLoad中
-(void)viewDidload{
[mapView addSubview:classBViewController.tableView];
classBViewController.tableView.hidden=YES;
}
-(IBAction)buttonClick{
classBViewController.tableView.hidden=NO;
}
答案 0 :(得分:0)
您可以使用Delegate或NSNotification来执行此操作。
在这里,Delegate看起来更好。您可以通过跟踪更改来使用委托。
在A.h课程中,请执行以下操作: -
@protocol ClassADelegate <NSObject>
- (void)classAButtonClickEvent;
@end
并在A类中为ClassADelegate创建委托对象 @property(非原子,强)id * delegate;
在班级A.m
- (IBAction)buttonClick{
if ([delegate respondsToSelector:@selector(classAButtonClickEvent)]) {
[delegate classAButtonClickEvent];
}
在B类中符合ClassADelegate并实现protocol.in方法的classAButtonClickEvent()方法,您可以对classB的tableview执行更改。对于
- (void)classAButtonClickEvent {
classBViewController.tableView.hidden=NO;
}
希望这会有所帮助!!
答案 1 :(得分:0)
我不认为Tanvi的回答是你正在寻找的。在这种情况下创建委托是没有意义的,因为你已经知道点击按钮的时间(当点击按钮时,IBAction,buttonClick应该触发,假设你正确设置了它)。
不应隐藏和取消隐藏tableview,而应将B类推送到UINavigationController上。您还不需要使用此解决方案将类B中的tableView添加为viewDidLoad上mapView的子视图。
以下是我所说的一个例子:
// If you don't already have a navigation controller
-(IBAction)buttonClick {
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self];
ClassB *classBViewController = [[ClassB alloc] init];
[nav pushViewController:classBViewController animated:YES];
}
// If you already have a navigation controller
-(IBAction)buttonClick {
ClassB *classBViewController = [[ClassB alloc] init];
[self.navigationController pushViewController:classBViewController animated:YES];
}