UITableView防止子类的委托方法

时间:2014-04-02 10:15:10

标签: ios iphone override uitableview

我的所有UIViewController都是从一个ViewController继承的,而基本viewController有一个UITableView,如下所示:

BaseViewController.h

@interface BaseViewController : UIViewController<UITableViewDelegate,UITableViewDataSource> 

@property (nonatomic, retain) UITableView *menuTableView;

BaseViewController.m

- (void)viewDidLoad

{
_menuTableView =  [[UITableView alloc] initWithFrame:CGRectMake(.......];
_menuTableView.delegate = self;
_menuTableView.dataSource = self;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; ... ETC

和我的另一个viewController: SPViewController.h

@interface SPViewController : BaseViewController <UITableViewDataSource,UITableViewDelegate>{

    UITableView *myTableView;
}

SPViewController.m

- (void)viewDidLoad

{
myTableView =  [[UITableView alloc] initWithFrame:CGRectMake(.......];
myTableView.delegate = self;
myTableView.dataSource = self;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; ... ETC

每当我到达割线UITableView时,我发现第一个(_menuTableView)个数据和值以及高度和动作......等与第二个({{{ 1}})。

如何通过调用子类myTableView方法来阻止类中继承的每个其他类的UITableView

1 个答案:

答案 0 :(得分:2)

你不能,这就是OOP的工作方式。

您的子类需要知道超类可能正在使用不同的表视图进行调用。它应该使用if语句来检查传递给委托方法的tableView,然后调用super(并且不做任何事情)或运行自己的逻辑。