无法从tableview加载detailViewController

时间:2013-09-18 22:51:26

标签: ios objective-c uitableview uiimageview tableviewcell

我有一个表视图加载sqldata文件,该文件显示标签和图像  细胞。我希望将图像和其他数据加载到下一个vc中,但似乎无法获得 一个日志来拉回文件时间所以没有机会推翻它。一切都在 以编程方式完成,以便更难找到它。所有帮助赞赏!!!

  

//表格视图

   - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath >*)indexPath {

       [self.tableView deselectRowAtIndexPath:indexPath animated:YES];

       ATPictureViewController *newView = [[ATPictureViewController alloc] init];

       newView.mainImageView.image=[tableView >cellForRowAtIndexPath:indexPath].imageView.image ;

       [self.navigationController pushViewController:newView animated:YES];

      // NSLog(@"Log33 %@",);
   }

   @end

我以为这就是它

newView.mainImageView.image = [tableView cellForRowAtIndexPath:indexPath] .imageView.image;

但没有给我带来任何好处

    //vc.h

   #import <UIKit/UIKit.h>

   @interface ATPictureViewController : UIViewController{

       UIImageView *mainImage;
   }

   @property (strong, nonatomic) UIImageView *mainImageView;

   @end

不确定我是否在这里打电话

   //vc.m

   - (void)viewDidLoad
   {
       [super viewDidLoad];

       self.mainImageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 50, 200,    200)];
       [self.view addSubview:self.mainImageView];

       self.mainImageView.image = ???????????

1 个答案:

答案 0 :(得分:1)

至少有一个问题,可能是两个。首先,您不能在didSelectRowAtIndexPath方法中设置mainImageView的图像,因为此时尚未加载ATPictureViewController的视图,并且其mainImageView属性将为nil。相反,您应该在ATPictureViewController中创建一个UIImage属性,并将其值赋给didSelectRowAtIndexPath中的[tableView cellForRowAtIndexPath:indexPath] .imageView.image。然后,您可以在ATPictureViewController的viewDidLoad方法中设置mainImageView的图像。

另一个可能的问题是使用alloc init来实例化newView。根据您为该控制器创建视图的位置,您可能会得到一个空白视图。您应该使用initWithNibName:bundle:如果您在xib中查看,或者是instantiateViewControllerWithIdentifier:如果您在故事板中创建它。