खोज…


टिप्पणियों

IOS 8 और बाद में, आप सभी iOS उपकरणों पर UISplitViewController क्लास का उपयोग कर सकते हैं, iOS के पिछले संस्करणों में, क्लास केवल iPad पर उपलब्ध है। UISplitViewController UITabViewController , UINavigationController तरह एक कंटेनर वर्ग है। यह मुख्य दृश्य को दो UIViewControllers masterViewController (PrimaryViewController) और detailViewController (SecondaryViewController) में अलग करता है। हम दो UIViewControllers साथ एक NSArray भेज सकते हैं और Apple आपके आवेदन के लिए rootviewcontroller के रूप में UISplitViewController की सिफारिश करता है। UIViewControllers बीच बातचीत करने के लिए मैं NSNotificationCenter उपयोग करता NSNotificationCenter

ऑब्जेक्टिव सी में डेलिगेट्स का उपयोग करके मास्टर और डिटेल व्यू के बीच बातचीत

UISplitViewController को आपके ऐप की विंडो के रूट व्यू कंट्रोलर की आवश्यकता है

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]
self.window.backgroundColor = [UIColor blackColor];
[self.window makeKeyAndVisible];
self.window.clipsToBounds = YES;
SplitViewController *spView = [[SplitViewController alloc]init];
self.window.rootViewController = spView;
[self.window makeKeyAndVisible];
return YES;
}

बस अपने UISplitVIewController लिए एक ऑब्जेक्ट UISplitVIewController और इसे अपने आवेदन के लिए rootViewController के रूप में सेट करें।

SplitViewController.h

#import <UIKit/UIKit.h>
#import "MasterViewController.h"
#import "DetailViewController.h"
@interface ViewController : UISplitViewController
{
DetailViewController *detailVC;
MasterViewController *masterVC;
NSMutableArray *array;
}
@end

MasterViewController एक है UIViewController है कि डिवाइस की बाईं ओर सेट किया गया है आप में चौड़ाई सेट कर सकते हैं UISplitViewController का उपयोग कर maximumPrimaryColumnWidth और DetailViewController सही पक्ष पर है

SplitViewController.m

#import "ViewController.h"
#define ANIMATION_LENGTH 0.3
@interface ViewController ()
@end

@implementation ViewController
- (void)viewDidLoad 
{
[super viewDidLoad];
masterVC = [[MasterViewController alloc]init];
detailVC = [[DetailViewController alloc]init];
[masterVC setDetailDelegate:(id)detailVC];
NSArray *vcArray = [NSArray arrayWithObjects:masterVC, detailVC, nil];
self.preferredDisplayMode = UISplitViewControllerDisplayModeAutomatic;
self.viewControllers = vcArray;
self.delegate = (id)self;
self.presentsWithGesture = YES;
}

मास्टर और डिटेल UIViewController को एक NSArray जोड़ा जाता है, जो self.viewControllers सेट है। self.preferredDisplayMode , MasterViewController और DetailViewController प्रदर्शन के लिए निर्धारित मोड है। self.presentsWithGesture प्रदर्शित करने के लिए स्वाइप जेस्चर सक्षम MasterViewController

MasterViewController.h

#import <UIKit/UIKit.h>

@protocol DetailViewDelegate <NSObject>
@required
- (void)sendSelectedNavController:(UIViewController *)viewController;
@end

@interface MasterViewController : UIViewController
{
    UITableView *mainTableView;
    NSMutableArray *viewControllerArray;
}
@property (nonatomic, retain) id<DetailViewDelegate> detailDelegate; 
@end

एक बनाएं DetailViewDelegate साथ प्रतिनिधि sendSelectedNavController भेजने के लिए विधि UIViewControllers को DetailViewController । फिर MasterViewController एक UITableView बनाया जाता है। ViewControllerArray में सभी UIViewControllers होते हैं, DetailViewController में प्रदर्शित किया जाना चाहिए

MasterViewController.m

#import "MasterViewController.h"

@implementation MasterViewController
@synthesize detailDelegate;

-(void)viewDidLoad
{
[super viewDidLoad];

UIViewController *dashBoardVC = [[UIViewController alloc]init];
[dashBoardVC.view setBackgroundColor:[UIColor redColor]];
UIViewController *inventVC = [[UIViewController alloc]init];
[inventVC.view setBackgroundColor:[UIColor whiteColor]];
UIViewController *alarmVC = [[UIViewController alloc]init];
[alarmVC.view setBackgroundColor: [UIColor purpleColor]];
UIViewController *scanDeviceVC = [[UIViewController alloc]init];
[scanDeviceVC.view setBackgroundColor:[UIColor cyanColor]];
UIViewController *serverDetailVC = [[UIViewController alloc]init];
[serverDetailVC.view setBackgroundColor: [UIColor whiteColor]];
viewControllerArray = [[NSMutableArray alloc]initWithObjects:dashBoardVC,inventVC,alarmVC,scanDeviceVC,serverDetailVC,nil];
mainTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 50,self.view.frame.size.width, self.view.frame.size.height-50) style:UITableViewStylePlain];
[mainTableView setDelegate:(id)self];
[mainTableView setDataSource:(id)self];
[mainTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
[mainTableView setScrollsToTop:NO];
[self.view addSubview:mainTableView];
}

- (CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 100;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:    (NSInteger)section
{
    return [viewControllerArray count];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;    //count of section
}

- (UITableViewCell *)tableView:(UITableView *)tableView
     cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *cellId = [NSString stringWithFormat:@"Cell%li%ld",(long)indexPath.section,(long)indexPath.row];
UITableViewCell *cell =[tableView   dequeueReusableCellWithIdentifier:cellId];

if (cell == nil)
{
   cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId];
}
[cell.contentView setBackgroundColor:[UIColor redColor]];
cell.textLabel.text =[NSString stringWithFormat:@"My VC at index %ld",(long)indexPath.row];
return cell;
}

- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [detailDelegate sendSelectedNavController:[viewControllerArray objectAtIndex:indexPath.row]];
}

@end

कुछ UIViewController बनाया और एक NSMutableArray जोड़ा। UITableView पर तो आरंभ नहीं हो जाता didselectrowatindexpath विधि मैं एक भेजने UIViewController को DetailViewController का उपयोग कर detailDelegate इसी के साथ प्रतिनिधि UIViewController में NSMutableArray एक पैरामीटर के रूप

DetailViewController.h

#import <UIKit/UIKit.h>

@interface DetailViewController : UIViewController<UICollectionViewDelegate>
{
    UIViewController *tempNav;
}
@end

DetailViewController.m

#import "DetailViewController.h"

@implementation DetailViewController
-(void)viewDidLoad
{
    [super viewDidLoad];
    [self.view setBackgroundColor:[UIColor whiteColor]];
}
-(void)sendSelectedNavController:(UIViewController *)navController
{
    NSArray *viewsToRemove = [self.view subviews];
    for (UIView *v in viewsToRemove) {
        [v removeFromSuperview];
    }
    tempNav = navController;
    [self.view addSubview:tempNav.view];
}
@end

sendSelectedNavController यहाँ सब को दूर करने के साथ घोषित किया जाता है UIView 'में एस DetailViewController और पारित जोड़ने UIViewController से MasterViewController



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow