如何在第一类视图中加载第二类tableView数据

时间:2016-11-28 06:29:36

标签: objective-c iphone uitableview

我有两个班级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;
}

2 个答案:

答案 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]; 
}