Iphone: Как вернуть изображение или что-нибудь из второго вида в первый? - PullRequest
1 голос
/ 29 ноября 2010

пожалуйста, проверьте изображение, вы будете более ясно, что я хочу представить

Это первый запуск в режиме первого просмотра

Это пустое табличное представление

На правой панели есть кнопка добавления

alt text

Если вы нажмете кнопку «Добавить», она перейдет ко второму виду

Второе представление таблицы только из 3 строк

alt text

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

alt text

Нажмите создать, текст появится в первой строке

<<strong> Это вопрос 1, я не знаю, как передать текст в ячейку ... >

И продолжайте, это настраиваемая радиокнопка в ряду 2 и ряду 3

Если вы сначала не нажмете переключатель, в противном случае вы не сможете вызвать этот меторд

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

Это последние два вида Иконка Вид 1 alt text Icon View 2 alt text

Есть много кнопок в представлении, это второй вопрос: Если я нажму одну из этих кнопок, она вернется ко второму виду и покажет значок кнопки в строке 2 или строке 3

таблицы.

Наконец, нажмите кнопку Готово (тоже самое на правой панели)

Он вернется к первому виду и покажет, что вы вводите имя и какой значок вы выбрали (Основа для радиокнопки выбрана)

Это последний вопрос.

Я загружаю свой исходный код здесь: Ссылка

Вы можете скачать его ...

и вот код о том, как я толкаю взгляд ...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    if (indexPath.row==0) {
        [self nameInputAlertView];
    }
    RadioButtonClass *btn = [radioButtonArray objectAtIndex:[indexPath row]];
    if (btn.selected) {
        //Radio Button is selected ,use that icon 
        if (indexPath.row == 1) {
            IconViewOne *iconViewOne = [[IconViewOne alloc]init];
            iconViewOne.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
            [self.navigationController pushViewController:iconViewOne animated:YES];
            [iconViewOne release];
        }
        if (indexPath.row==2) {
            IconViewTwo *iconViewTwo = [[IconViewTwo alloc]init];
            iconViewTwo.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
            [self.navigationController pushViewController:iconViewTwo animated:YES];
            [iconViewTwo release];
        }
    }
}

итак ... Резюме всего вопроса ...

1.Как записать текст через текстовое поле в виде предупреждения в ячейку табличного представления?

2.Как выбрать значок с последнего просмотра на второй?

3.Отправить все эти два элемента в первый вид: Имя и значок

Я только знаю, как передать элементы из представления 1 в представление 2 ... Не знаю, как вернуться обратно ......

Спасибо, приятель, пожалуйста, помогите мне разобраться с этой проблемой. Я буду очень очень признателен!

Кстати: вы можете взять класс переключателей, чтобы добавить в любой ваш проект

Ответы [ 3 ]

1 голос
/ 30 ноября 2010

В любом случае, если вам не нравится использование переменных AppDelegate, есть еще один метод, который вы можете использовать в случае контроллеров навигации: -

например. в "IConViewOne.m"

UITableViewCell* cell = [[[self.navigationController.viewControllers objectAtIndex:1] tableView] cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]] ;
    cell.imageView.image=[UIImage imageNamed:[NSString stringWithFormat:@"marco%d.png",button.tag]];

, а затем в «ViewWillAppear» SecondView: -

[self.tableView reloadData];

Аналогично для перехода к RootViewController вы можете дать: -

self.navigationController.topViewController.tableView

OR

[[self.navigationController.viewControllers objectAtIndex:0]tableView]
1 голос
/ 29 ноября 2010

Я не знаю, это правильный путь или нет, но я думаю, что это может помочь вам. Поскольку вы хотите получить имя и изображение в обоих представлениях, объявите их в приложении appdelegate, чтобы к ним можно было получить глобальный доступ.

Que 1:

При выборе строки будет вызываться didSelectRow Delegate. В этом вы получите IndexPath. Сохраните этот indexPath глобально. Тогда

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if ([alertView tag]==1) {
    if (buttonIndex == 1){
        NSLog(@"Created");
        UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:tableIndexPath]; //tableIndexpath is declared globally as NSindexpath
        ReturnToFirstViewAppDelegate *appObj=(ReturnToFirstViewAppDelegate *)[[UIApplication sharedApplication]delegate];
        appObj.selectedName = macroNameSetting.text; //Setting the Name globally
        cell.detailTextLabel.text =macroNameSetting.text;
        [self.tableView reloadInputViews];
    }
  }
}

Que 2 и 3

В AppDelegate объявить

NSString *selectedName;
UIImage *selectedImage;

Назначить свойство и синтезировать его

В вашем iconViews

- (void)setIcon : (id)sender{
  UIButton *button = (UIButton *)sender;
  UIImage *selectedImg = [UIImage imageNamed:[NSString stringWithFormat:@"marco%d",button.tag]];
    ReturnToFirstViewAppDelegate *appObj=(ReturnToFirstViewAppDelegate *)[[UIApplication sharedApplication]delegate];
    appObj.selectedImage = selectedImg;
// push your viewcontroller
 }

В любом Viewcontroller получить к ним доступ как

  ReturnToFirstViewAppDelegate *appObj=(ReturnToFirstViewAppDelegate *)[[UIApplication sharedApplication]delegate];
 //For example
 //cell.image = appObj.selectedImage;
0 голосов
/ 30 ноября 2010

Отличным способом передачи информации от одного объекта к другому, не зная, кто является получателем (а может быть несколько объектов, заинтересованных в информации), является публикация NSNotification.Это позволяет полностью избежать непосредственного знания других объектов.

Прочитайте документ Apple Темы программирования уведомлений и попробуйте.

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