Доступ к переменным из другого ViewController в Swift
У меня есть следующий ViewController
:
class PageContentViewController: UIViewController {
var pageIndex: Int
}
Как мне получить доступ к pageIndex
из другого ViewController?
Мне нужно получить доступ к pageIndex
в этой функции:
func pageViewController(pageViewController: UIPageViewController!, viewControllerBeforeViewController viewController: UIViewController!) -> UIViewController! {
//var index: Int
//index = ?
NSUInteger index = ((PageContentViewController*) viewController).pageIndex; // in Swift?
if ((index == 0) || (index == NSNotFound)) {
return nil;
}
index--;
return [self viewControllerAtIndex:index]; // in Swift?
}
Ответы
Ответ 1
Все по умолчанию в swift является общедоступным, и, таким образом, если вы заявляете что-то вроде этого:
class SomeViewController: UIViewController {
var someVariable: SomeType = someValue
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
}
Вы можете получить к нему доступ, если у вас есть экземпляр:
var myCustomViewController: SomeViewController = SomeViewController(nibName: nil, bundle: nil)
var getThatValue = myCustomViewController.someVariable
Ответ 2
ViewController1.swift
class ViewController1: UIViewController {
struct GlobalVariable{
static var myString = String()
}
}
ViewController2.swift
class ViewController2: UIViewController
{
print(ViewController1.GlobalVariable.myString)
}
Ответ 3
Здесь моя попытка конвертировать этот код в swift:
func pageViewController(pageViewController: UIPageViewController!, viewControllerBeforeViewController viewController: UIViewController!) -> UIViewController! {
var pageController = viewController as PageContentViewController
var index: Int? = pageController.pageIndex
if var idx: Int = index{
if idx == 0{
return nil
}
else{
idx--
return viewControllerAtIndex(idx)
}
}
else{
return nil
}
}
class PageContentViewController: UIViewController {
var pageIndex: Int?
}
Ответ 4
Я решил так.,
class StaticLinker
{
static var viewController : PageContentViewController? = nil
}
class PageContentViewController: UIViewController
{
var pageIndex: Int
StaticLinker.viewController = self
}
class AnotherClass
{
StaticLinker.viewController.pageIndex = 100
}