UIImageView没有划分

时间:2016-02-16 10:49:03

标签: ios swift uitableview uiimageview segue

我的UIImageView中有一个NewsTableViewController.swift(0x0),其NewsDetailTableViewController.swift位于UIImageView,其中UIImageView为600x216。

如果你问为什么第一个detailImages是0x0,那是因为这是我知道如何通过每个单元划分不同图像的唯一方法。我的主VC中有16个单元,每个单元VC都有不同的图像。我不想在主VC的单元格中显示图像。

如果你能提出另一种方法,那就太好了。

无论如何,保持这个解决方案,我的segue有什么问题?图像存储在名为 NewsTableViewController.swift 的数组中。此数组位于NewsDetailTableViewController.swift

这是我的UIImageView

prepareForSegue应该是标题和内容之间的空白区域。

以下是NewsTableViewController.swift中的 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){ if segue.identifier == "showDetail" { if let indexPath = tableView.indexPathForSelectedRow { let destinationController = segue.destinationViewController as! NewsDetailTableViewController destinationController.item = items[indexPath.row] //destinationController.imageNames = detailImages } } } 方法:

NewsDetailTableViewController.swift

这是我的import UIKit class NewsDetailTableViewController: UITableViewController { var items = [Item]() var item:Item! var siteURL = "http://annabellesykes.netau.net/shailenewoodleyfansappjson.json" var image:UIImageView! @IBOutlet weak var segueImageView:UIImageView! override func viewDidLoad() { super.viewDidLoad() title = "News" navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil) getLatestNews() tableView.estimatedRowHeight = 400.0 tableView.rowHeight = UITableViewAutomaticDimension tableView.separatorStyle = UITableViewCellSeparatorStyle.None } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } // MARK: - Table view data source override func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 1 } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! NewsDetailTableViewCell // Configure the cell... cell.newsDetailTitle.text = item.title cell.newsDetailDate.text = item.date cell.newsDetailContent.text = item.content cell.newsDetailImageView.image = UIImage() cell.newsDetailTitle.lineBreakMode = NSLineBreakMode.ByWordWrapping cell.newsDetailTitle.numberOfLines = 999 cell.newsDetailContent.lineBreakMode = NSLineBreakMode.ByWordWrapping cell.newsDetailContent.numberOfLines = 999 cell.newsDetailTitle.sizeToFit() cell.newsDetailContent.sizeToFit() return cell } override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return UITableViewAutomaticDimension } override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return UITableViewAutomaticDimension } func getLatestNews() { let request = NSURLRequest(URL: NSURL(string: siteURL)!) let urlSession = NSURLSession.sharedSession() let task = urlSession.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in if let error = error { print(error) return } if let data = data { self.items = self.parseJsonData(data) NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void in self.tableView.reloadData() }) } }) task.resume() } func parseJsonData(data: NSData) -> [Item] { var items = [Item]() do { let jsonResult = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments) as? NSDictionary let jsonItems = jsonResult?["items"] as! [AnyObject] for jsonItem in jsonItems { let item = Item() item.title = jsonItem["title"] as! String item.content = jsonItem["content"] as! String item.date = jsonItem["date"] as! String items.append(item) } } catch { print(error) } return items } } 代码:

NewsTableViewController.swift

这是我的import UIKit class NewsTableViewController: UITableViewController { var siteURL = "http://annabellesykes.netau.net/shailenewoodleyfansappjson.json" var items = [Item]() var item:Item! var newsImage:UIImageView? @IBOutlet weak var imageHeaderView1:UIImageView! var detailImages = ["newsimage1.jpg", "newsimage2.jpg", "newsimage3.jpg", "newsimage4.jpg", "newsimage5.jpg", "newsimage6.jpg", "newsimage7.jpg", "newsimage8.jpg", "newsimage9.jpg", "newsimage10.jpg", "newsimage10.jpg", "newsimage11.jpg", "newsimage12.jpg", "newsimage13.jpg", "newsimage14.jpg", "newsimage15.jpg", "newsimage16.jpg"] override func viewDidLoad() { super.viewDidLoad() getLatestNews() navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } // MARK: - Table view data source override func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return items.count } override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! NewsTableViewCell // Configure the cell... cell.titleLabel.text = items[indexPath.row].title cell.dateLabel.text = items[indexPath.row].date cell.contentLabel.text = items[indexPath.row].content cell.newsImageView.image = UIImage(named: detailImages[indexPath.row]) cell.titleLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping cell.titleLabel.numberOfLines = 999 cell.contentLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping cell.contentLabel.numberOfLines = 3 cell.dateLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping cell.dateLabel.numberOfLines = 999 cell.dateLabel.sizeToFit() //cell.imageView?.image = self.imageNames[indexPath.row] return cell } override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction] { let shareAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Share", handler: { (action, indexPath) -> Void in let defaultText = "Check this out: " + self.items[indexPath.row].title + "! " + self.items[indexPath.row].content let activityController = UIActivityViewController(activityItems: [defaultText], applicationActivities: nil) self.presentViewController(activityController, animated: true, completion: nil) }) shareAction.backgroundColor = UIColor(red: 179.0/255.0, green: 239.0/255.0, blue: 247.0/255.0, alpha: 1.0) return [shareAction] } override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath){ cell.alpha = 0 UIView.animateWithDuration(1.0, animations: { cell.alpha = 1 }) } func getLatestNews() { let request = NSURLRequest(URL: NSURL(string: siteURL)!) let urlSession = NSURLSession.sharedSession() let task = urlSession.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in if let error = error { print(error) return } if let data = data { self.items = self.parseJsonData(data) NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void in self.tableView.reloadData() }) } }) task.resume() } func parseJsonData(data: NSData) -> [Item] { var items = [Item]() do { let jsonResult = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments) as? NSDictionary let jsonItems = jsonResult?["items"] as! [AnyObject] for jsonItem in jsonItems { let item = Item() item.title = jsonItem["title"] as! String item.content = jsonItem["content"] as! String item.date = jsonItem["date"] as! String items.append(item) } } catch { print(error) } return items } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){ if segue.identifier == "showDetail" { if let indexPath = tableView.indexPathForSelectedRow { let destinationController = segue.destinationViewController as! NewsDetailTableViewController destinationController.item = items[indexPath.row] destinationController.image = UIImageView(image: UIImage(named: detailImages[indexPath.row])) } } } @IBAction func unwindToHomeScreen(segue: UIStoryboardSegue) { } }

$TOMCAT_HOME/conf

2 个答案:

答案 0 :(得分:0)

您似乎无法在cellForRowAtIndexPath的{​​{1}}内正确设置图片。

这一行特别是:

NewsDetailTableViewController.swift

答案 1 :(得分:-2)

Here is code in objective c... 
#pragma Mark Prepare For Segue
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([segue.identifier isEqualToString:@"segue"]) {

    viewcontroller *destViewController = segue.destinationViewController;
        destViewController.image=[[Apparels objectAtIndex:0];

        }
}

//In other class 
@property (strong, nonatomic) NSString *image;
   UIImageView.image=[UIImage imageNamed:image];