2016-01-06 3 views
0

У меня проблема с данными прохода между контроллером. В требовании я использовал панель вкладок, есть корень, чтобы «искать людей» и «просмотр профиля». когда я нажимаю профиль профиля, данные взяты из моих данных NSUserDefaults, но если я нажму на ячейку людей из поиска людей, в представлении профиля будут отображаться данные из ячейки людей. Я смущен, как справиться с этим делом. Возможно ли идентифицировать идентификатор segue, который отображается в профиле. пожалуйста, помогите, предпочитают Свифт кодДанные опций UIViewController от segue или NSUserdefault

UPDATE:

это мой код на "поиск людей посмотреть":

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "ShowAlumniAngkatan" { 
     if let destination = segue.destinationViewController as? DetailProfile{ 
      let indexPath = ListAlumniTable.indexPathForSelectedRow 
      let data = SearchResult[indexPath!.row] 
     } 
    } 
} 

и ниже "Просмотр профиля" Код:

class ProfileDetailsViewController: UIViewController { 


@IBOutlet weak var BackgroundImage: UIImageView! 
@IBOutlet weak var ProfileTable: UITableView! 
@IBOutlet weak var ProfilePictureImage: UIImageView! 

var Profiles:DetailProfile! 
var contacts:[Contact] = [Contact]() 
var work:[Work] = [Work]() 
var advise:String! 

var SeeMoreEnbable:Bool! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    InitializationView() 
    SeeMoreEnbable = false 
    getData() 
} 



override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    self.view.endEditing(true) 
} 

// MARK - Init View 
func InitializationView(){ 
    blurImage() 
    circleImage() 
} 

func getData(){ 
    let defaults = NSUserDefaults.standardUserDefaults().objectForKey("UserDetail") as! [NSData] 
    self.advise = NSKeyedUnarchiver.unarchiveObjectWithData(defaults[3] as NSData) as! String 
    let temp1 = NSKeyedUnarchiver.unarchiveObjectWithData(defaults[2] as NSData) as! [NSArray] 
    for data in temp1{ 
     let jabatan = NSKeyedUnarchiver.unarchiveObjectWithData(data[0] as! NSData) as! String 
     let perusahaan = NSKeyedUnarchiver.unarchiveObjectWithData(data[1] as! NSData) as! String 
     let tahunkerja = NSKeyedUnarchiver.unarchiveObjectWithData(data[2] as! NSData) as! String 
     self.work.append(Work(Jabatan: jabatan, Perusahaan: perusahaan, TahunKerja: tahunkerja)) 
     print(work[0].Jabatan) 
     print(work.count) 

    } 
    let temp2 = NSKeyedUnarchiver.unarchiveObjectWithData(defaults[1] as NSData) as! [NSArray] 
    for data in temp2{ 
     let Type = NSKeyedUnarchiver.unarchiveObjectWithData(data[0] as! NSData) as! String 
     let Detail = NSKeyedUnarchiver.unarchiveObjectWithData(data[1] as! NSData) as! String 
     self.contacts.append(Contact(ContactType: Type, ContactDetail: Detail)) 
    } 
} 

}

Я внедрил prepareForSegue по поиску люди, которые должны отправлять данные из выбранной строки. Но у меня нет идеи о выборе данных из segue или от NSUserDefaults.

+0

Пожалуйста, вставьте код для читателей лучше понять – SRI

+0

U просто необходимо создать экземпляр из профиляVC и передать данные как свойство для него до настоящего времени с помощью segue – Tj3n

ответ

0

Вы должны указать segue identifier в своем раскадровке. Затем в вашем контроллере «поиск людей» реализует метод prepareForSegue. С помощью этого метода вы можете установить данные в следующий viewcontroller (вид профиля), сохранив их в некоторых переменных поля вида профиля.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    super.prepareForSegue(segue, sender: sender) 

    if let vc = segue.destinationViewController as? ProfileViewController { 
    vc.profileData = selectedProfileData 
    } 
} 
+0

Я внедрил ваш код, но это не работает, чтобы выбрать данные, которые должны отображаться в виде профиля. –

+0

Ой, подождите, я неправильно понял ваш вопрос. Проблема в том, что у вас немного странный UX. Зачем вам выбирать профиль на панели вкладок, чтобы показывать профиль человека, которого вы искали, и, возможно, щелкнул его в виде таблицы? Это бессмысленно. Попытайтесь вместо этого сохранить профиль tabbutton только в своем собственном профиле, и вместо этого вы можете повторно использовать макет и код, когда вы нажимаете ищущего человека, чтобы показать детали (нажмите детали segue). – tskulbru

0

Если вы используете контроллер бара вкладок, то вы можете использовать ниже метод для передачи данных б/ш контроллеров просмотреть

func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool { 
    if(viewController.isKindOfClass(AddReminderViewController)){ 
      let vc = viewController as! AddReminderViewController 
      vc.name = "Demo" 
    } 
    return false 
} 
+0

где я должен добавить этот код? в UITabBarController не работает эта функция –