iphone switchview с кнопками, как разрешить нажатие кнопки только один раз? - PullRequest
0 голосов
/ 29 июня 2010

я начинающий разработчик и создаю свое первое приложение для iphone ... и у меня есть одна небольшая проблема:)

Я переключаю в своей программе 2 вида, второй вид заканчивается над первым, и когда я нажимаю 2 раза или болеена кнопку, чтобы отобразить отключение имитатора SecondView iphone, и если после нажатия кнопки, чтобы показать FirstView, он все еще показывает представление SecondView: (...

, и мне нужна помощь, чтобы сделать кнопку нажатой только один раз, иесли после переключения обратно в FirstView можно снова нажать один раз, и он показывает как нажатие, теперь он показывает нажатым только тогда, когда я прикасаюсь к нему, ... я хочу, чтобы кнопки в TabBar были похожи, и если я использую TabBar, мне будет сложнееНе знаю, как изменить его высоту и добавить собственный фон, а также изменить эффект нажатой кнопки

Большое спасибо и извините за мой плохой английский!.

вот какой код я использую для переключения видов с помощью кнопок

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

@interface FirstView : UIViewController {

}

-(IBAction) goToSecondView:(id) sender;
-(IBAction) goToFirstView:(id) sender;

@end

//    FirstView.m
#import "FirstView.h"

#import "SecondView.h"

@implementation FirstView

SecondView *secondView;

-(IBAction) goToSecondView:(id) sender{
   secondView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil]; 
   [self.view addSubview:secondView.view];
}

 -(IBAction) goToFirstView:(id) sender {      
    [secondView.view removeFromSuperview];
}

большое спасибо!

1 Ответ

3 голосов
/ 29 июня 2010

Это:

@implementation FirstView

SecondView *secondView;

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

Вы должны определить это как:

@interface FirstView : UIViewController {
    SecondView *secondView;
}
@property(nonatomic, retain) SecondView *secondView;

... и используйте его как:

-(IBAction) goToSecondView:(id) sender{
   UIView *newView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil];
   self.secondView=newView;
   [newView release];
   [self.view addSubview:self.secondView.view];
}

Для ясности вам следует также переименовать FirstView и SecondView в FirstViewController и SecondViewController, поскольку они являются контроллерами представления, а не самими представлениями.

В целом, то, что вы пытаетесь сделать, опасно и сложно. Вы не меняете представления, добавляя и удаляя их как подпредставления. Вам необходимо поменять контроллер представления и их представления с помощью UINavigationController или UITabbarController. В Xcode File> New Project есть проект, основанный на Навигации, и шаблоны проектов, основанные на Tabbar. Любой из них предоставит вам большую часть кода, необходимого для реализации простого приложения с использованием любого контроллера.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...