2013-04-17 49 views
1

我有一個非常簡單但令人沮喪的問題。在我的didSelectRowAtIndexPath:方法中,我試圖在另一個視圖上更改UIImageView,但不幸的是,它不起作用,並且UIImageView保持不變。如何在另一個視圖控制器中更改UIImageView的圖像?

我在做什麼錯?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    MainViewController *demoController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil]; 
    demoController.title = [NSString stringWithFormat:@"Demo Controller #%d-%d", indexPath.section, indexPath.row]; 

    NSArray *controllers = [NSArray arrayWithObject:demoController]; 
    self.sideMenu.navigationController.viewControllers = controllers; 
    [self.sideMenu setMenuState:MFSideMenuStateClosed]; 

    if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"server"] isEqualToString:@"imap.mail.me.com"]){ 
     if (indexPath.row == 0) 
      theAppDelegate.folder = @"INBOX"; 
      UIImage *image = [UIImage imageNamed:@"inbox.png"]; 
      demoController.imageBG.image = image; 

     if (indexPath.row == 1) 
      theAppDelegate.folder = @"Sent Messages"; 
     UIImage *image2 = [UIImage imageNamed:@"sentmail.png"]; 
     demoController.imageBG.image = image2; 

     if (indexPath.row == 2) 
      theAppDelegate.folder = @"Drafts"; 
     UIImage *image3 = [UIImage imageNamed:@"drafts.png"]; 
     demoController.imageBG.image = image3; 

     if (indexPath.row == 3) 
      theAppDelegate.folder = @"Deleted Messages"; 
     UIImage *image4 = [UIImage imageNamed:@"trash.png"]; 
     demoController.imageBG.image = image4; 

     if (indexPath.row == 4) 
      theAppDelegate.folder = @"Archive"; 
     UIImage *image5 = [UIImage imageNamed:@"archive.png"]; 
     demoController.imageBG.image = image5; 

     if (indexPath.row == 5) 
      theAppDelegate.folder = @"Junk"; 
     UIImage *image6 = [UIImage imageNamed:@"junk.png"]; 
     demoController.imageBG.image = image6; 

    } 
} 

回答

0

根據這個if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"server"] isEqualToString:@"imap.mail.me.com"])會得到真正的手段,你demoController.imageBG.image總是有junk.png

我想你錯過了{}if身體。

它必須是這樣

if (indexPath.row == 0) 
{ 
    theAppDelegate.folder = @"INBOX"; 
    UIImage *image = [UIImage imageNamed:@"inbox.png"]; 
    demoController.imageBG.image = image;  
} 
if (indexPath.row == 1) 
    ......... 

注:當你書面方式這種類型的編碼更好地利用else-ifswitch-case的。

+0

我已經添加了{},但它仍然沒有改變。甚至在之前,我甚至沒有得到「junk.png」。 –

+0

把斷點放到這一行if([[[[[NSUserDefaults standardUserDefaults] objectForKey:@「server」] isEqualToString:@「imap.mail.me.com」])',檢查這一行是否爲真或假.. – Mani

+0

我知道這是真的,否則文件夾不會改變,他們會這樣做。 –

0

拳錯過{}if條件,使這裏你junk.png圖片上您的每一次UIImageView ...

而且,這裏不是你這個邏輯,你可以簡單地通過NSString圖像的名稱...

只是財產綜合串並傳入您的MainViewController類像波紋管......

=>MainViewController.h

@property (nonatomic, retain) NSString *strImageName; 

=>MainViewController.m

@synthesize strImageName; 

,只是通過這個名字在這個變量像你上面的代碼...

if (indexPath.row == 0){ 
    theAppDelegate.folder = @"INBOX"; 
    demoController.strImageName = @"inbox.png"; 
    [demoController.strImageName retain]; 
    } 
    else if (indexPath.row == 1){ 
     theAppDelegate.folder = @"Sent Messages"; 
    demoController.strImageName = @"sentmail.png"; 
    [demoController.strImageName retain]; 
    } 

,並在您MainViewController的viewDidLoad方法只是分配此圖像像波紋管..

- (void)viewDidLoad 
{ 
     [super viewDidLoad]; 
     UIImage *image = [UIImage imageNamed:strImageName]; 
     imageBG.image = image; 
} 
相關問題