Как обновить пользовательское изображение, если ячейка таблицы выбрана вне контроллера - PullRequest
0 голосов
/ 28 декабря 2010

Мне нужно обновить изображение в Firstviewcontroller, если в tableviewcontroller выбрана ячейка.Мое приложение Навигационная база.Firstviewcontroller содержит событие кнопки.нажмите на кнопку, я запускаю просмотр таблицы.В табличном представлении я выбираю ячейку и обновляю галочку в левой части, она работает нормально.Мой вопрос, когда ячейка выбрана в то же время, мне нужно обновить другое пользовательское изображение в viewcontroller для указания, что ячейка выбрана. При ссылке я получил выделение ячейки изображения внутри таблицы.

here it is Appdelegate

    @interface FertilityAppAppDelegate : NSObject <UIApplicationDelegate> 
    {
        Fertility *updateImage;

    }

    @property (nonatomic, retain) Fertility *updateImage;

    @implementation
    @synthesize updateImage;



    @interface Fertility : UIViewController
    {
        UIImageView *imgView;
        FertilityAppAppDelegate *Appdelegate;
    }

    @property(nonatomic,retain) FertilityAppAppDelegate *Appdelegate;
    @property (nonatomic, retain)  UIImageView *imgView;


Viewcontroller for image update

    @implementation Fertility
    @synthesize imgView,Appdelegate;


    - (void)viewDidLoad 
    {
        [super viewDidLoad];

        Appdelegate = (FertilityAppAppDelegate*)[[UIApplication sharedApplication] delegate];
    }

    - (void)changeImg:(UIImage*)image
    {

        imgView.image = image;
    }

    - (void)assignObjToTableViewClass
    {

        Appdelegate.updateImage = self;
    }

 Tableview controller 

    @interface Menstruation : UITableViewController 
   {

        FertilityAppAppDelegate *Appdelegate;

    }

    @property (nonatomic, retain) FertilityAppAppDelegate *Appdelegate;


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

        UIImage *image = [UIImage imageNamed:@"bar.png"];
        [Appdelegate.updateImage changeImg:image];


        selectedRow = indexPath.row;
        [self.tableView reloadData];
    }


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

             static NSString *CellIdentifier = @"Cell";

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

                    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
              [[cell imageView] setImage:[UIImage imageNamed:@"Tick.png"]];

              }


             [[cell imageView] setHidden:YES];

             if (indexPath.row == selectedRow) 
             {

              [[cell imageView] setHidden:NO];
             }


             NSString *cellValue = [MenstruationArray objectAtIndex:indexPath.row];
             cell.text = cellValue;
             return cell;

      }

alt text

Как отобразить в Firstviewcontroller.изображение выше - кнопка с красной цветной полосой в нижней части кнопки.
Когда я нажимаю эту кнопку при запуске Firstviewcontroller для представления таблицы менструации, в то же время мне нужно обновить панель изображений до Firstviewcontroller.

1 Ответ

0 голосов
/ 28 декабря 2010

Если вы хотите изменить изображение в другом контроллере представления, вам нужно назначить изображение в методе didSelectRowAtIndexPath.

Для этого вам нужно получить доступ к конкретному объекту контроллера представления (который ужеиспользуя не новый).

Для подобных вещей нет учебных пособий.

Я пришлю код, пожалуйста, следуйте так.

Прежде всегоВы должны объявить объект класса ImgViewController в AppDelegateClass.Только тогда вы можете использовать.

Тогда используйте следующий код.Я написал этот код для понимания.

@interface ImgViewController : UIViewController{
      UIImageView *imgView;
      AppDelegateClass *delegate;
}

@implementation ImgViewController

 - (void)viewDidLoad{

     delegate = (AppDelegateClass*)[[UIApplication sharedApplication]delegate];
     delegate.imageViewControllerObj = self; // Or you can call the method 
     //[self assignObjToTableViewClass];
}

 - (void)changeImg:(UIImage*)image{

     imgView.image = image;
}

 - (void)assignObjToTableViewClass{

    delegate.imageViewControllerObj = self;
}

@end

@interface TableViewControllerClass : UIViewController{
      AppDelegateClass *delegate;

}

@implementation TableViewControllerClass

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
         UIImage *image = //Give what ever image you want to change
         [delegate.imageViewControllerObj changeImg:image];

}


@end

С уважением,

Сатья

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