Доступ к кнопке табличного представления из другого представления - PullRequest
0 голосов
/ 13 июня 2011

Как я могу получить доступ к кнопке, которая присутствует в представлении, из любого другого представления. Позвольте мне уточнить, у меня есть два контроллера представления A и B. В представлении A у меня есть кнопка внутри представления таблицы, скажем button1.эта кнопка внутри представления таблицы из моего другого представления. Пожалуйста, помогите. Я попытался создать объект класса A, а затем написать [objA.tableview button1, затем я установил изображение], но это не сработало. Пожалуйста, помогите.Любая помощь будет оценена.

Спасибо, Кристи

Ответы [ 3 ]

0 голосов
/ 13 июня 2011

Используйте свойство viewControllers для доступа к списку всех UIViewController в вашем стеке навигации.

@property(nonatomic, copy) NSArray *viewControllers

NSArray* allController = self.navigationController.viewControllers ;

for(UIViewController* myAController in  allController)
{
         if( [myAController isMemberOfClass])
         {
              //Here Now you have the A controller 
              MyViewAController*  myATempController =  (MyViewAController*)myAController;

             //Now you could access the property of your A Controller.
         }
}
0 голосов
/ 13 июня 2011

Я бы сделал вашу кнопку свойством контроллера представления, чтобы вы могли просто получить к ней доступ по имени.

В вашем файле интерфейса:

@interface MyViewController : UIViewController {

    UIButton* myButton;

}

@property (nonatomic, retain) UIButton* myButton;

@end

В вашем файле реализации:

@implementation MyViewController

@synthesize myButton;

@end

Тогда вы можете просто использовать aViewController.myButton, чтобы получить кнопку.

0 голосов
/ 13 июня 2011

Вы можете попробовать добавить тег к своей кнопке (убедитесь, что она уникальна).

Допустим, у вашей кнопки есть тег 45; и вы сделали это в виде таблицы.

Теперь в другом методе вы хотите использовать эту кнопку следующим образом: -

-(void)deletePostMethod
{
    UIButton *button=(UIButton *)[self.view viewWithTag:49];
    [button setBackgroundColor:[UIColor redColor]];
    NSLog(@"button=%@",button);
}

Отредактированный ответ: -

- (UITableViewCell *)tableView:(UITableView *)tablefirst cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // I  have added a button in my table view in first row
    if (indexPath.row==0) {
        UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
        [btn setFrame:CGRectMake(0, 0, 40, 30)];
        [btn addTarget:self action:@selector(deletePostMethod) forControlEvents:UIControlEventTouchUpInside];
        btn.tag=579;
        [cell.contentView addSubview:btn];
    }
        return cell;
}

При таком способе нажатия кнопки

-(void)deletePostMethod
{
    UIButton *button=(UIButton *)[self.view viewWithTag:579];
    [button setBackgroundColor:[UIColor redColor]];
    NSLog(@"button=%@",button);
}

После нажатия этой кнопки цвет фона кнопки устанавливается на красный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...