Проблема со вторым делегатом - PullRequest
1 голос
/ 26 сентября 2011

У меня есть два UITableView, у каждого из которых есть свой делегат в одном и том же UIViewController.

Я пытаюсь вызвать управление в другом делегате, но это не удалось.

Краткое описание:
mainViewController содержит UITableView (с UITableViewDelegate и UITableViewDataSource) + UIImageView.
вторичныйTable содержит UITableView (с UITableViewDelegate и UITableViewDataSource).

Я хочу вызвать UIImageView из вторичной таблицы. * 101 * * * *

@interface secondaryTable : UIViewController <UITableViewDataSource,UITableViewDelegate>
@end


@interface mainViewController : UIViewController  <UITableViewDataSource,UITableViewDelegate> {

@property (nonatomic,retain) IBOutlet UIImageView *navbar;
@property (nonatomic,retain) IBOutlet UITableView *Table1;
@property (nonatomic,retain) IBOutlet UITableView *Table2;
@end

In .m

@implementation secondaryTable

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 2;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *MyIdentifier = @"MyIdentifier2";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) {

        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease];

        [cell.textLabel setFont:[UIFont boldSystemFontOfSize:12.0]];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        cell.textLabel.textAlignment = UITextAlignmentCenter;
    }


    if (indexPath.row == 0) cell.textLabel.text =@"A";
    if (indexPath.row == 1) cell.textLabel.text =@"B";

    return cell;

}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    NSLog(@"Selected");

    mainViewController *myController = [[mainViewController alloc] init];

    [myController.navbar setHidden:NO];
}

@end


@implementation mainViewController

- (void)viewDidLoad {
Table1.delegate = self;
Table1.dataSource = self;

secondaryTable *myDelegate = [secondaryTable alloc];
Table2.delegate = myDelegate;
Table2.dataSource = myDelegate;
@end
}

В журнале консоли набирается «Выбрано», но управление не отображается.
Почему нельзяэто вызывает управление navbar в mainViewController?

1 Ответ

1 голос
/ 26 сентября 2011

Я бы предложил сделать так, чтобы обе таблицы указывали на один и тот же делегат, но в ваших методах делегата выбирали поведение в зависимости от того, какая это таблица. Пример:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (tableView == firstTable)
    {
        // Do appropriate things here
    }
    else if (tableView == secondTable)
    {
        // do things for table #2 here
    }
    else
    {
        assert(no);  // error checking
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...