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