Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ios中以景观模式显示类似iPad的facebook侧栏_Ios_Objective C_Ipad_Ios7_Sidebar - Fatal编程技术网

在ios中以景观模式显示类似iPad的facebook侧栏

在ios中以景观模式显示类似iPad的facebook侧栏,ios,objective-c,ipad,ios7,sidebar,Ios,Objective C,Ipad,Ios7,Sidebar,我有一个iPad应用程序,我想在其中实现一个侧栏功能,就像我们在facebook应用程序中一样 我用这个来做这个 有了这一点,我成功地实现了侧栏功能,它工作得很好,但是我的第一个视图并没有很好地显示出来 下面是截图 从屏幕截图中可以看到,应用程序启动时,有一个黑色背景,我的整个视图没有全屏显示 它应该像下面这样 点击按钮,侧视图如下所示 它应该很小,因为我采用了宽度为300、高度为768的视图大小 但它显示出更大的影响 这是我在appdelegate中更改的代码 - (BOOL)appli

我有一个iPad应用程序,我想在其中实现一个侧栏功能,就像我们在facebook应用程序中一样

我用这个来做这个

有了这一点,我成功地实现了侧栏功能,它工作得很好,但是我的第一个视图并没有很好地显示出来

下面是截图

从屏幕截图中可以看到,应用程序启动时,有一个黑色背景,我的整个视图没有全屏显示

它应该像下面这样

点击按钮,侧视图如下所示

它应该很小,因为我采用了宽度为300、高度为768的视图大小

但它显示出更大的影响

这是我在appdelegate中更改的代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    [self createEditableCopyOfDatabaseIfNeeded];

    // Override point for customization after application launch.
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];

    UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:self.viewController];

    SlidingViewController *slidingView = [[SlidingViewController alloc]initWithNibName:@"SlidingViewController" bundle:nil];

    self.slideMenuController = [[SlideMenuController alloc] initWithCenterViewController:navController];
    self.slideMenuController.leftViewController = slidingView;

    self.window.rootViewController = navController;
    [self.window makeKeyAndVisible];
   return YES;
}

- (IBAction)sideBarPressed:(id)sender
{
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    if (appDelegate.slideMenuController.position == TKSlidePositionCenter) {
        [appDelegate.slideMenuController presentLeftViewControllerAnimated:YES];
    } else {
        [appDelegate.slideMenuController presentCenterViewControllerAnimated:YES];
    }
}
我想在我的iPad上安装这个,仅用于横向模式

请告诉我这里怎么了

我被困在这里好一阵子了

任何帮助都将不胜感激


提前谢谢。

我正在用这个,它很好


所以最好使用UISplitViewController

 //in app delegate do like this
 //in appDelegate.h file 
 #import <UIKit/UIKit.h>

 @interface AppDelegate : UIResponder <UIApplicationDelegate>

 @property (strong, nonatomic) UIWindow *window;
 @property (nonatomic, retain) UISplitViewController *splitViewCOntroller; 
 @end


 //in appDelegate.m file
 #import "AppDelegate.h"
 #import "SplitMasterViewController.h"  //create a UITableviewController 
 #import "SplitViewDetailController.h"  //create a UIViewController

  @implementation AppDelegate
  @synthesize splitViewCOntroller = _splitViewCOntroller;

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
   {
      // Override point for customization after application launch.
      SplitMasterViewController *masterController  = [[SplitMasterViewController alloc]initWithNibName:@"SplitMasterViewController" bundle:nil]; //this is the master menu controller

     UINavigationController *masterNavController = [[UINavigationController alloc]initWithRootViewController:masterController];

     SplitViewDetailController *detailViewController = [[SplitViewDetailController alloc]initWithNibName:@"SplitViewDetailController" bundle:nil]; //this is the master detail controller


     UINavigationController *detailNavController = [[UINavigationController alloc]initWithRootViewController:detailViewController];
masterController.detailViewController = detailViewController;

    _splitViewCOntroller = [[UISplitViewController alloc]init]; //initilise split controller
    _splitViewCOntroller.delegate = detailViewController;      //set the delegate to detail controller
    _splitViewCOntroller.viewControllers = [NSArray arrayWithObjects:masterNavController,detailNavController, nil]; //set the splitview controller
     self.window.rootViewController = _splitViewCOntroller; //finally your splitviewcontroller as the root view controller
     [self.window makeKeyAndVisible];

     return YES;
 }


 //in SplitMasterViewController.h this must be a table that contains your side bar menu items 
 #import "ViewController.h" //comment this if it shows any error
 #import "SplitViewDetailController.h"

 @interface SplitMasterViewController :        UITableViewController<UITableViewDataSource,UITableViewDelegate>
 @property (nonatomic, retain) SplitViewDetailController *detailViewController; //to get the detailview from masterMenu controller 
 @property (nonatomic, retain) NSArray *Names;

 @end 

 // in SplitMasterViewController.m file
 #import "SplitMasterViewController.h"
 #import "SplitViewDetailController.h"


 @interface SplitMasterViewController ()

 @end

 @implementation SplitMasterViewController

 @synthesize Names;
 @synthesize detailViewController;


 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
 {
     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
     if (self) {
     // Custom initialization
      }
     return self;
  }

  - (void)viewDidLoad
  { 
    [super viewDidLoad];
    //  Do any additional setup after loading the view from its nib.
    Names = [[NSArray alloc] initWithObjects:@"apple", @"banana",
             @"mango", @"grapes", nil];

    [self.tableView selectRowAtIndexPath:
    [NSIndexPath indexPathForRow:0 inSection:0]
                            animated:NO
                      scrollPosition:UITableViewScrollPositionMiddle];
   }

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
       return 1;
    }

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
      return [Names count];
    }

   - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
     static NSString *CellIdentifier = @"Cell";

     UITableViewCell *cell = [tableView
                         dequeueReusableCellWithIdentifier:CellIdentifier];
     if (cell == nil) {
     cell = [[UITableViewCell alloc]
            initWithStyle:UITableViewCellStyleDefault
            reuseIdentifier:CellIdentifier];
        }

    // [self configureCell:cell atIndexPath:indexPath];

    cell.textLabel.text = [Names objectAtIndex:indexPath.row];
    return cell;
   }

   - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
     SplitViewDetailController *detailController =  self.detailViewController;
     detailController.myLabel.text = [Names objectAtIndex:indexPath.row]; //set the name from the array
 }

  - (void)didReceiveMemoryWarning
  {
     [super didReceiveMemoryWarning];
     // Dispose of any resources that can be recreated.
  }

  @end


  //in SplitViewDetailController.h
  #import "ViewController.h"

  @interface SplitViewDetailController : UIViewController<UISplitViewControllerDelegate>
  @property (strong, nonatomic) id detailItem;
  @property (strong, nonatomic) IBOutlet UILabel *myLabel;
  @property (nonatomic, retain) UIBarButtonItem *leftBarButtonItem; //to show a button on left side

  @end

 //in SplitViewDetailController.m 

 #import "SplitViewDetailController.h"

 @interface SplitViewDetailController ()
 {
   UIPopoverController *masterPopoverController;
 }

 @end

  @implementation SplitViewDetailController

  - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
  {
     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
     if (self) {
      // Custom initialization
     }
     return self;
  }

  - (void)viewDidLoad
  {
    [super viewDidLoad];
     // _leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"Menu" style:UIBarButtonItemStyleBordered target:self action:nil];
  }

  - (void)didReceiveMemoryWarning
  {
     [super didReceiveMemoryWarning];
     // Dispose of any resources that can be recreated.
   }


  //these are the call back to detail view controller to hide or show the button
  - (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController  withBarButtonItem:(UIBarButtonItem *)barButtonItem  forPopoverController:(UIPopoverController *)popoverController
 {
   _leftBarButtonItem = barButtonItem;
   _leftBarButtonItem.style = UIBarButtonItemStyleBordered;
   _leftBarButtonItem.title = @"Menu";
   [self.navigationItem setLeftBarButtonItem:_leftBarButtonItem animated:YES];
  }

  // Called when the view is shown again in the split view, invalidating the button
  - (void)splitViewController:(UISplitViewController *)splitController       willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
   {
      [self.navigationItem setLeftBarButtonItem:nil animated:YES];
   }

  @end
//应用程序内委托执行以下操作
//在appDelegate.h文件中
#进口
@接口AppDelegate:UIResponder
@属性(强,非原子)UIWindow*window;
@属性(非原子,保留)UISplitViewController*splitViewCOntroller;
@结束
//在appDelegate.m文件中
#导入“AppDelegate.h”
#导入“SplitMasterViewController.h”//创建UITableviewController
#导入“SplitViewDetailController.h”//创建UIViewController
@实现AppDelegate
@合成splitViewCOntroller=\u splitViewCOntroller;
-(BOOL)应用程序:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项
{
//应用程序启动后自定义的覆盖点。
SplitMasterViewController*masterController=[[SplitMasterViewController alloc]initWithNibName:@“SplitMasterViewController”捆绑包:nil];//这是主菜单控制器
UINavigationController*masterNavController=[[UINavigationController alloc]initWithRootViewController:masterController];
SplitViewDetailController*detailViewController=[[SplitViewDetailController alloc]initWithNibName:@“SplitViewDetailController”捆绑包:nil];//这是主详细控制器
UINavigationController*detailNavController=[[UINavigationController alloc]initWithRootViewController:detailViewController];
masterController.detailViewController=detailViewController;
_splitViewCOntroller=[[UISplitViewController alloc]init];//初始化拆分控制器
_splitViewCOntroller.delegate=detailViewController;//将委托设置为detail controller
_splitViewCOntroller.ViewController=[NSArray arrayWithObjects:masterNavController,detailNavController,nil];//设置splitview控制器
self.window.rootViewController=\u splitViewCOntroller;//最后将您的splitViewCOntroller作为根视图控制器
[self.window makeKeyAndVisible];
返回YES;
}
//在SplitMasterViewController.h中,这必须是包含侧栏菜单项的表
#导入“ViewController.h”//如果显示任何错误,请对此进行注释
#导入“SplitViewDetailController.h”
@接口SplitMasterViewController:UITableViewController
@属性(非原子,保留)SplitViewDetailController*detailViewController//从主菜单控制器获取详细视图
@属性(非原子,保留)NSArray*名称;
@结束
//在SplitMasterViewController.m文件中
#导入“SplitMasterViewController.h”
#导入“SplitViewDetailController.h”
@接口拆分MasterViewController()
@结束
@MasterViewController的实现
@综合姓名;
@综合控制器;
-(id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
{
self=[super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
如果(自我){
//自定义初始化
}
回归自我;
}
-(无效)viewDidLoad
{ 
[超级视图下载];
//从nib加载视图后,执行任何其他设置。
name=[[NSArray alloc]initWithObjects:@“苹果”,“香蕉”,
@"芒果,"葡萄,无";;
[self.tableView选择行索引路径:
[NSIndexPath indexPathForRow:0第0节]
动画:没有
scrollPosition:UITableViewScrollPositionMiddle];
}
-(NSInteger)表格视图中的节数:(UITableView*)表格视图
{
返回1;
}
-(NSInteger)表视图:(UITableView*)表视图行数节:(NSInteger)节
{
返回[姓名计数];
}
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
静态NSString*CellIdentifier=@“Cell”;
UITableViewCell*单元格=[tableView
dequeueReusableCellWithIdentifier:CellIdentifier];
如果(单元格==nil){
单元格=[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
}
//[self-configureCell:cell-atIndexPath:indexPath];
cell.textlab.text=[Names objectAtIndex:indexath.row];
返回单元;
}
-(void)tableView:(UITableView*)tableView未选择RowatineXpath:(NSIndexPath*)indexPath
{
SplitViewDetailController*detailController=self.detailViewController;
detailController.myLabel.text=[Names objectAtIndex:indexPath.row];//从数组中设置名称
}
-(无效)未收到记忆警告
{
[超级记忆警告];
//处置所有可以重新创建的资源。
}
@结束
//在SplitViewDetailController.h中
#导入“ViewController.h”
@接口SplitViewDetailController:UIViewController
@属性(强,非原子)id detailItem;
@属性(强,非原子)IBUILabel*myLabel;
@属性(非原子,保留)UIBarButtonItem*左