2015-12-18 89 views
-3

我使用Master - Detail應用程序在xcode中創建一個新項目。每次運行我的程序時,這些行在主視圖中都不可見。提前致謝!請檢查下面我的代碼...主要詳細模板不顯示行

MasterViewController.h

#import <UIKit/UIKit.h> 
@class DetailViewController; 
@interface MasterViewController : UITableViewController 
@property (strong, nonatomic) DetailViewController *detailViewController; 
@end 

MasterViewController.m

#import "MasterViewController.h" 
#import "DetailViewController.h" 
@interface MasterViewController() 

@property NSMutableArray *objects; 
@end 

@implementation MasterViewController 

- (void)viewDidLoad { 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
self.navigationItem.leftBarButtonItem = self.editButtonItem; 
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] ***emphasized text***initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject:)]; 
self.navigationItem.rightBarButtonItem = addButton; 
self.detailViewController = (DetailViewController *) [[self.splitViewController.viewControllers lastObject] topViewController]; 
} 
-(void)viewWillAppear:(BOOL)animated { 
self.clearsSelectionOnViewWillAppear = self.splitViewController.isCollapsed; 
[super viewWillAppear:animated]; 
} 
- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 
- (void)insertNewObject:(id)sender { 
if (!self.objects) { 
    self.objects = [[NSMutableArray alloc] init]; 
} 
[self.objects insertObject:[NSDate date] atIndex:0]; 
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; 
} 

#pragma mark - Segues 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([[segue identifier] isEqualToString:@"showDetail"]) { 
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
    NSDate *object = self.objects[indexPath.row]; 
    DetailViewController *controller = (DetailViewController *)[[segue destinationViewController] topViewController]; 
    [controller setDetailItem:object]; 
    controller.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem; 
    controller.navigationItem.leftItemsSupplementBackButton = YES; 
} 
} 

#pragma mark - Table View 
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
return 1; 
} 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section { 
return self.objects.count; 
} 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 
NSDate *object = self.objects[indexPath.row]; 
cell.textLabel.text = [object description]; 
return cell; 
} 

-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
// Return NO if you do not want the specified item to be editable. 
return YES; 
} 

- (void)tableView:(UITableView *)tableView commitEditingStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
if (editingStyle == UITableViewCellEditingStyleDelete) { 
    [self.objects removeObjectAtIndex:indexPath.row]; 
    [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
} else if (editingStyle == UITableViewCellEditingStyleInsert) { 
    // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view. 
} 
} 
@end 

DetailViewController.h

#import <UIKit/UIKit.h> 
@interface DetailViewController : UIViewController 
@property (strong, nonatomic) id detailItem; 
@property (weak, nonatomic) IBOutlet UILabel *detailDescriptionLabel; 
@end 

DetailViewController.m

#import "DetailViewController.h" 
@interface DetailViewController() 
@end 

@implementation DetailViewController 
#pragma mark - Managing the detail item 
-(void)setDetailItem:(id)newDetailItem { 
if (_detailItem != newDetailItem) { 
    _detailItem = newDetailItem; 
    // Update the view. 
    [self configureView]; 
    } 
} 

-(void)configureView { 
// Update the user interface for the detail item. 
if (self.detailItem) { 
    self.detailDescriptionLabel.text = [self.detailItem description]; 
} 
} 
-(void)viewDidLoad { 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
[self configureView]; 
} 
-(void)didReceiveMemoryWarning { 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 
@end 
+0

在這種情況下不需要圖片,它只會顯示一張空白視圖。 *需要的是您的代碼(如果您使用插座,則需要安裝Interface Builder文件)。首先,如果您遵循教程並確信數據源方法是好的,請確保表視圖'datasource'設置正確。 –

+0

@ A-Live,感謝您的回覆。我檢查了數據源,並且設置正確。我也刪除並重新安裝xcode。我仍然有同樣的問題,我仍然在努力!非常感謝您的支持...... –

+0

您真的不應該重新安裝Xcode,除非某些基本功能被破壞。不要採取這樣的措施,嘗試在關鍵方法上使用斷點,並查看它們是否被調用並按預期執行。驗證是否提供了所需的視圖控制器,表視圖是否添加到視圖層次結構中,您可能還需要根據您如何使用表視圖來重新加載數據。最後,您的細胞可能無法看到,例如有0高度和沒有分隔符。如果您需要良好的反饋,請不要忘記將代碼添加到問題中。 –

回答

0

我想,如果您將設備的大小縮放到75%和100%,則會顯示行。我想這與xcode有關。