【问题标题】:Programmatically done UIImageView not working以编程方式完成的 UIImageView 不起作用
【发布时间】:2011-06-13 05:01:11
【问题描述】:

我有两种观点。在第一个视图中,我有一个表格,在选择一行时,我调用第二个视图,如下面的代码。还给出了被调用类的代码。但不知何故,我只能看到改变的背景,而不是那里的其他 UIImageView。任何人都可以请帮助我吗?谢谢。

-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    details.movieName2=movieName;
    self.title=@"Back";
    [[self navigationController] pushViewController:details animated:NO];    
}

视图类头:

#import <UIKit/UIKit.h>


@interface detailedView : UIViewController {
    NSString *movieName2;
    UIImageView *myImageView;
}

@property (nonatomic, retain) UIImageView *myImageView;
@property (nonatomic, retain) NSString *movieName2;
@end

而视图类代码是:

#import "detailedView.h"

@implementation detailedView

@synthesize movieName2;
@synthesize myImageView;

- (id) init {
    self=[super init];
    movieName2=@"";    
    myImageView=[[UIImageView alloc] init];

return self;
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }

    return self;
}

-(void) viewDidAppear:(BOOL)animated
{
    self.view=[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
    self.view.frame=CGRectMake(0, 0, 355, 615);
    self.view.backgroundColor=[[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background-retina.png"]];

    self.title=self.movieName2;    

    [myImageView setImage:[UIImage imageNamed:@"sample.png"]];
    [myImageView setFrame:CGRectMake(5, 5, 50, 50)];
    [self.view addSubview:myImageView]; 
}

- (void)dealloc
{
    [myImageView release];
    [movieName2 release];
    [super dealloc];
}

@end

【问题讨论】:

  • 旁注,details.movieName2=[movieName retain]; 过度保留它。 details.movieName2=movieName; 可以。

标签: ios cocoa-touch uipickerview


【解决方案1】:

按下细节控制器后尝试设置电影名称

[[self navigationController] pushViewController:details animated:NO]; 
details.movieName2=[movieName retain];

更新

@Ahsan 无论你在做什么都是错的。当您点击 tableViewCell 时,您需要分配第二个视图,或者如果您已经分配了 detailsView,那么为什么要在 viewDidAppear 中分配一个 newView。尝试评论该行

self.view=[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];

看看它是否有效。背景是有效的,因为您在 detailsView 本身中设置背景颜色。问题在于分配新视图并将该视图分配给 self.view。

【讨论】:

  • @Rahul :看,第二个视图被调用并相应地设置了背景。它只是导致问题的 UIImageView :(
  • @Rahul:不,不工作......但 UILabel 工作。知道为什么吗? :(
  • @Ahsan 你更新你的代码了吗?能否请您发布完整的方法,例如 tableViewDidSelectRow,并在详细信息视图中进一步说明您在做什么。还要确保在界面生成器中正确绑定所有内容
  • @Rahul :除了为 ViewDidSelectRow 提供的代码之外,我还在做一些 NSLogs。对于细节视图控制器,也类似:我只是在初始化其他东西(但没有做任何事情)。我没有使用 IB。尝试以编程方式制作 UI!
  • @Ahsan 您是否尝试调试您的应用程序?确保正确执行此行 [myImageView setImage:[UIImage imageNamed:@"sample.png"]];尝试像这样分开它们 UIImage *img = [UIImage imageNamed:@"sample.png"];然后查看它是返回 UIImage 对象还是 nil。如果 UIImage 对象为零,那么您的应用程序包中没有该图像。如果它返回一个 UIImage 对象,则设置如下 [myImageView setImage:img];。还要确保 myImageView 不应该是 nil
猜你喜欢
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多