我的所有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
?
答案 0 :(得分:2)
你不能,这就是OOP的工作方式。
您的子类需要知道超类可能正在使用不同的表视图进行调用。它应该使用if
语句来检查传递给委托方法的tableView
,然后调用super
(并且不做任何事情)或运行自己的逻辑。