2014-01-04 5 views
0

Я немного новичок в Xcode развития/приложенияПрограммирование статичные клетки в UITableView

В настоящее время я пытаюсь запрограммировать 4 статические ячейки в моей точки зрения контроллера. Однако, когда я иду запускать свое приложение, tableview не отображается.

Вот скриншот того, что происходит в ИУ тренажере:

enter image description here

Здесь образ моей Tableview и его атрибутов в раскадровке:

enter image description here

Мой файл SettingsViewController.h:

#import <UIKit/UIKit.h> 
#import <MessageUI/MessageUI.h> 

@interface SettingsViewController : UIViewController < MFMailComposeViewControllerDelegate> 

@property (weak, nonatomic) IBOutlet UIBarButtonItem *sidebarButton; 

@end 

Мой SettingsViewController.m файл:

#import "SettingsViewController.h" 
#import "SWRevealViewController.h" 

@interface SettingsViewController() 

@property (nonatomic, strong) NSArray *menuItems; 

@end 

@implementation SettingsViewController 

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

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
_sidebarButton.target = self.revealViewController; 
_sidebarButton.action = @selector(revealToggle:); 
_sidebarButton.tintColor = [UIColor colorWithWhite:0.1f alpha:0.7f]; 

// Add pan gesture to hide the sidebar 
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer]; 
// Do any additional setup after loading the view. 
} 



- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
if(indexPath.row == 0 && indexPath.section == 0){ 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://myawesomeapp.com/support"]]; 
} else if(indexPath.row == 0 && indexPath.section == 1){ 
     if ([MFMailComposeViewController canSendMail]) { 
      MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init]; 
      mailViewController.mailComposeDelegate = self; 
      [mailViewController setSubject:@"[My Awesome App] Support request"]; 
      [mailViewController setToRecipients:[NSArray arrayWithObject:@"[email protected]"]]; 
      [self presentModalViewController:mailViewController animated:YES]; 
     } 
      } 

} 

    - (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error{ 
[self dismissModalViewControllerAnimated:YES]; 
} 

Что именно проблема?

ответ

1

Насколько я знаю, статический контент работает только с UITableViewController как часть раскадровки. Вместо этого ваш контроллер представлений является подклассом UIViewController, поэтому он не сможет прочитать информацию из раскадровки.

Я не знаю, как вам удалось получить его настроить, как у вас, но может можно просто переопределить ваш SettingsViewController в наследовании от контроллера табличного вместо контроллера обычный вид (вам возможно, придется подключить выход tableView после этого).

Чтобы изменить наследование, изменить эту строку кода:

@interface SettingsViewController : UIViewController < MFMailComposeViewControllerDelegate> 

Для этого:

@interface SettingsViewController : UITableViewController < MFMailComposeViewControllerDelegate> 

Если нет, то, возможно, придется перетащить новый контроллер представления таблицы на раскадровке и набор это снова со статическим содержимым.

+0

спасибо! это то, что я точно искал! –

0

Вы должны принять протокол UITableViewDelegate, добавив <UITableViewDelegate> в ваш .h-файл.

После этого вам необходимо подключить представление таблицы к соответствующему .h или .m файлу и сделать его делегатом для соответствующей таблицы.

Во всяком случае кратко рассмотрит на this учебнике ..

+0

Мне просто нужно добавить UITableViewDelegate в мой .h-файл? А потом мне нужно связать делегата с моим контроллером? Мне не нужно добавлять UITableViewDataSource? –

+0

Я попытался реализовать протокол UITableViewDelegate в моем SettingsViewController.h, и я также подключил выход делегата моего табличного представления к SettingsViewController в раскадровке. Ничего не произошло. –

0

В инспекторе размера раскадровки, попробуй установить высоту, ширину и координаты с достаточно большими значениями. Если это делает его видимым, тогда играйте с атрибутами автоматического растяжения в том же инспекторе (извините, не помните точных имен).

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