如果在控制器外选择表格单元格,如何更新自定义图像

时间:2010-12-28 14:22:52

标签: iphone uitableview

如果在tableviewcontroller中选择了单元格,我需要更新Firstviewcontroller中的图像。 我的应用程序导航库。 Firstviewcontroller包含按钮事件。点击按钮我正在射击tableview。在tableview我选择单元格并更新左侧的复选标记,它工作正常。我的问题是当同时选择单元格时我需要更新viewcontroller中的不同自定义图像以指示单元格被选中。 With ref.我在tableview内部选择了图像单元格。

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 :(得分:0)

如果要更改另一个视图控制器中的图像,则需要使用didSelectRowAtIndexPath方法分配图像。

为此您需要访问特定的视图控制器对象(已经使用的不是新对象)。

对于这些类型的事情,没有教程。

我会发一些代码,请按照这样说。

首先,您必须在AppDelegateClass中声明ImgViewController类对象。然后只有你可以使用。

然后使用以下代码。我已经写了这段代码用于理解。

@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

此致

萨蒂亚