2016-08-17 3 views
0

У меня здесь проблема.Отобразить оповещение в ScrollView с помощью Swift

Я получил этот класс public class ImageSlideshowItem: UIScrollView, UIScrollViewDelegate { внутри библиотеки, которую я использую. Поэтому я хочу, чтобы добавить alertController внутри scrollView, но я получаю ошибку, используя этот код

func saveImage() { 

    UIImageWriteToSavedPhotosAlbum(self.imageView.image!, self, "image:didFinishSavingWithError:contextInfo:", nil) 
} 

func image(image: UIImage!, didFinishSavingWithError error: NSError!, contextInfo: AnyObject!) { 
    if (error != nil) { 
     // Something wrong happened. 
     print("not saved") 
    } else { 
     // Everything is alright. 
     let alert = UIAlertController(title: "My Title", message: "This is my message.", preferredStyle: UIAlertControllerStyle.Alert) 

     // add an action (button) 
     alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)) 
     var fullscree: FullScreenSlideshowViewController = FullScreenSlideshowViewController() 
     // show the alert 
     self.presentViewController(alert, animated: true, completion: nil) 

    } 
} 

и ошибка его это одна.

Значение типа «ImageSlideshowItem» не имеет ни одного члена «presentViewController»

Любая идея, как я могу отобразить предупреждение?

Update:

Вот ссылка из другого класса, который я называю ImageSlideshowItems

"ImageSlideshow"

А вот полный класс ImageSlideShowItem

"ImageSlideshowItems"

ответ

1

вопрос вы что ScrollView является типом UIView Объект не controller, так что вы не получаете presentViewController внутри этого дочернего класса ScrollView, чтобы решить проблему, вы можете попробовать, как это, создать один экземпляр UIViewController внутри этого класса и использовать этот экземпляр для представления alertController, когда вы инициализировали scrollView, на любом ViewController, просто передать ссылку на этот viewController как этот

public class ImageSlideshowItem: UIScrollView, UIScrollViewDelegate { 

    var viewController: UIViewController? 

    func image(image: UIImage!, didFinishSavingWithError error: NSError!, contextInfo: AnyObject!) { 
     if (error != nil) { 
      // Something wrong happened. 
      print("not saved") 
     } else { 
      // Everything is alright. 
      let alert = UIAlertController(title: "My Title", message: "This is my message.", preferredStyle: UIAlertControllerStyle.Alert) 

      // add an action (button) 
      alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)) 
      var fullscree: FullScreenSlideshowViewController = FullScreenSlideshowViewController() 
      // show the alert 
      self.viewController?.presentViewController(alert, animated: true, completion: nil)    
     } 
    } 

} 

Теперь передать экземпляр текущего ViewController с scrollView объекта.

let imgslider = ImageSlideshowItem() 
imgslider.viewController = self 
+0

Единственное, что я не понимаю здесь, это передать экземпляр текущего ViewController? 'let imgslider = ImageSlideshowItem() imgslider.viewController = self' –

+0

Где вы создаете объект класса ImageSlideshowItem. внутри некоторого viewController, ссылается на правую ссылку на этот viewController, используя 'self' –

+0

Хорошо, я получаю эту ошибку' Не могу вызвать инициализатор для типа 'ImageSlideshowItem' без аргументов' –