1

ここに示すように、ナビゲーション タイトルと項目を含む NavigationController 内の TabViewController 内に TableViewController があります。
ここに画像の説明を入力

実行時には、ナビゲーション バーは表示されますが、ここに示すように、タイトルと追加項目は表示されません。まだ解決策はありません) 他の TabBar アイテムは通常の UIView を指していますが、これもナビゲーション バーのタイトルとバー アイテムを表示していません。
ここに画像の説明を入力

TabBarViewController と TableViewController の間のメディエーターとなる別の UIView を追加しようとしましたが、これで問題は解決しましたが、TableViewController の TabBar 機能が失われました。TableViewController からナビゲーション バーを指そうとしましたが、tableView のコントローラーとして機能しているため、そこから「viewDidAppear」や navigationBar クラスなどのメソッドにアクセスできません。

TableViewController クラス

import UIKit
import Parse
import ParseUI

class MeetsTableViewController: PFQueryTableViewController {

// Initialise the PFQueryTable tableview
override init(style: UITableViewStyle, className: String!) {
    super.init(style: style, className: className)
    //self.tableView.contentInset = UIEdgeInsetsZero;
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    // Configure the PFQueryTableView
    self.parseClassName = "Meets";
    self.pullToRefreshEnabled = true;
    self.textKey="city";
    self.paginationEnabled = false;

}


// Define the query that will provide the data for the table view
override func queryForTable() -> PFQuery {
    let query = PFQuery(className: "Meets");
    query.orderByDescending("numberOfComming");
    return query;
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell {

    var cell = tableView.dequeueReusableCellWithIdentifier("MyCell") as! CarTableViewCell!;

    if cell == nil {
        cell = CarTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "MyCell");
    }
    if let cityName = object?["city"] as? String{
        cell?.meetName?.text = "מפגש ב\(cityName)";
    }
    if let address = object?["address"] as? String{
        cell?.meetAddress?.text = address;
    }
    if let date = object?["date"] as? String{
        cell?.meetDate?.text = date;
    }
    if let time = object?["time"] as? String{
        cell?.meetTime?.text = time;
    }
    if let people = object?["numberOfComming"] as? Int{
        cell?.peopleAttending?.text = "\(people)";
    }

    if let thumbnail = object?["meetImg"] as? PFFile {

        thumbnail.getDataInBackgroundWithBlock{
            (imageData, error) -> Void in
            if error == nil {
                let image = UIImage(data: imageData!)
                cell.meetImage.image = image
            }
        }
    }

    return cell;
}

//delegate method
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    moveToDetail();
}

func moveToDetail(){
    let meetDetail=storyboard?.instantiateViewControllerWithIdentifier("meet") as! MeetDetailViewController;

    if let indexPath = self.tableView.indexPathForSelectedRow {
        let row = Int(indexPath.row);
        meetDetail.currentObject = (objects?[row] as? PFObject)
    }
    navigationController?.showViewController(meetDetail, sender: self);
}

}

TabViewController クラス

import UIKit

class MeetingsTabViewControllerViewController: UITabBarController {

override func viewDidLoad() {

    super.viewDidLoad()
    // set red as selected background color
    let numberOfItems = CGFloat(tabBar.items!.count)
    let tabBarItemSize = CGSize(width: tabBar.frame.width / numberOfItems, height: tabBar.frame.height)
    tabBar.selectionIndicatorImage = UIImage.imageWithColor(UIColor(hexString: "#8c332b")!, size: tabBarItemSize).resizableImageWithCapInsets(UIEdgeInsetsZero);
    tabBar.backgroundImage = UIImage.imageWithColor(UIColor(hexString: "#c1463e")!, size: tabBarItemSize).resizableImageWithCapInsets(UIEdgeInsetsZero);
    // item selected color
    tabBar.tintColor = UIColor.whiteColor();
    // remove default border
    tabBar.frame.size.width = self.view.frame.width + 4;
    tabBar.frame.origin.x = -2;

}
}

extension UIImage {

class func imageWithColor(color: UIColor, size: CGSize) -> UIImage {
    let rect: CGRect = CGRectMake(0, 0, size.width, size.height);
    UIGraphicsBeginImageContextWithOptions(size, false, 0);
    color.setFill();
    UIRectFill(rect);
    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

}

NavigationViewController クラス

import UIKit

class MeetsNavigationViewController: UINavigationController {

override func viewDidLoad() {
    super.viewDidLoad()

}



}
4

1 に答える 1

2

解決済み
タブ バーのチャイルドからナビゲーション バーにアイテムを追加することはできないようですが、タブ バー コントローラーにアイテムを追加することは可能であるため、これを行いました。そして、選択したタブに従ってタイトルに変更しただけで、このメソッドをタブバーコントローラーに追加しました。

override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
    if item.tag==0{
        navigationItem.title="המפגשים שלי";
    }else{
       navigationItem.title="כל המפגשים";
    }
}
于 2015-08-11T07:52:47.677 に答える