2015-11-20 5 views
0

В настоящее время я тестирую Swift. То, что я хотел сделать, это сделать ViewController с табличным представлением в нем и отобразить это через objc.But, когда я добавляю init мой класс Swift и хочу добавить представление в качестве подзадачи в моем объекторе view objc, мои ячейки скрываются как только я коснулся таблицы.Swift ViewController с TableView в Objc делает скрытую ячейку

Это мой Swift код: MainMenuViewController.swift

import UIKit 

@objc 
class MainMenuViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{ 

    @IBOutlet weak var tableView: UITableView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     tableView.registerNib(UINib(nibName: "MainMenuTableViewCell", bundle: nil), forCellReuseIdentifier: "Cell"); 
     tableView.delegate = self; 
     tableView.dataSource = self; 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    //MARK : tableview 
    func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1; 
    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 1; 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! MainMenuTableViewCell; 

     //cell.icon.image = UIImage(named: "clock") 
     cell.menuTitle.text = "test" 

     return cell; 
    } 
} 

MainMenuTableViewCell.swift

class MainMenuTableViewCell: UITableViewCell 
{ 
    //MARK : properties 

    @IBOutlet weak var menuTitle: UILabel! 
    @IBOutlet weak var icon: UIImageView! 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     // Initialization code 
    } 

    override func setSelected(selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 

     // Configure the view for the selected state 
    } 

} 

и это, как я добавить вид в ObjC: ViewController.m

- (IBAction)ShowMenu:(id)sender 
{ 
    MainMenuViewController *mainMenu = [[MainMenuViewController alloc] init]; 
    [mainMenu.view setFrame:CGRectMake(0,self.navigationController.navigationBar.height, self.view.width-100, self.view.height-self.navigationController.navigationBar.height)]; 
    [self.view addSubview:mainMenu.view]; 
} 

ответ

0

попытаться добавить его в качестве контроллера детского вида

[childController willMoveToParentViewController:rootViewController]; 
[rootViewController addChildViewController:childController]; 
[rootViewController.view addSubview:childController.view]; 
[childController didMoveToParentViewController:rootViewController]; 

Надеется, что это работает

+0

Кажется, работает. Но почему: D? – TdoubleG

+0

@TdoubleG Контроллер просмотра контейнера должен связать контроллер дочернего представления с собой, прежде чем добавить корневой вид ребенка в иерархию представлений. Это позволяет iOS правильно маршрутизировать события в контроллеры дочерних элементов и представления, которыми управляют эти контроллеры –

Смежные вопросы