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

Posted

技术标签:

【中文标题】如果在控制器外部选择表格单元格,如何更新自定义图像【英文标题】:How to update custom image if table cell is selected outside controller 【发布时间】:2010-12-28 14:22:52 【问题描述】:

如果在 tableviewcontroller 中选择了单元格,我需要更新 Firstviewcontroller 中的图像。 我的应用导航基础。 Firstviewcontroller 包含按钮事件。点击按钮我正在触发 tableview。在表格视图中,我选择单元格并更新左侧的复选标记,它工作正常。我的问题是,当同时选择单元格时,我需要在视图控制器中更新不同的自定义图像以指示单元格被选中。 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;

      

如何在 Firstviewcontroller 中显示。上图是按钮底部带有红色条的按钮。 当我在 Firstviewcontroller 触发月经表视图时单击此按钮时,同时我需要将图像栏更新为 Firstviewcontroller。

【问题讨论】:

正确的格式会有所帮助。 【参考方案1】:

如果您想在另一个视图控制器中更改图像,则需要在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

问候,

萨提亚

【讨论】:

如果选择了不同的单元格,我需要每次更新新图像。给我发一些示例或教程 哦,对不起,那是 sharedApplication。 “d”错过了 构建运行成功。这是崩溃。现在体验很好。这里 - (void)changeImg:(UIImage*)image 方法正在将图像从 tableview 更新到 viewcontroller。如果我需要更改 ID 为 Appdelegate.updateImage.Menstruation_Button=imgView.image 的按钮图像;没有更新我的图片。 您可以像这样更改按钮的图像; [Appdelegate.updateImage.Menstruation_Button setBackgroundImage:imgView.image forState: UIControlStateNormal]; 添加这个“Fertility *updateImage = [[Fertility alloc] initWithNibName:@"Fertility" bundle:nil];"应用程序中的行 didFinishLaunch 方法

以上是关于如果在控制器外部选择表格单元格,如何更新自定义图像的主要内容,如果未能解决你的问题,请参考以下文章

在uitableview中选择时如何更改自定义单元格图像和标签字体颜色?

自定义表格视图单元格上的多个图像(Swift)

选择表格视图单元格时显示自定义 UIImageView

如何固定表格视图中自定义单元格文本字段的标签值?

以swift语言在自定义表格视图单元格中更新进度视图下载

无法自动更新表格视图