2013-04-20 3 views
0

Я только начал работать в RubyMotion с историей в Rails. У меня есть простое приложение с двумя представлениями. Первое представление представляет собой tableView, в котором перечисляется массив «категорий». Каждая категория имеет подробный вид. Первоначально я настроил подробный вид, а также был tableView, но я перехожу к UILabel, так как у меня есть только небольшой абзац статического текста для каждой категории. Я посмотрел на использование таблицы с одной строкой в ​​деталях и изменил высоту ячеек с содержанием, но решил, что мне понадобится только одна ячейка ... вероятно, это было неправильное использование таблицы и более эффективное использование UILabel (что как я могу сказать, это для статического текста ... не просто «метка»). Мнения или идеи по этому поводу очень приветствуются.Как создать textView в рубине?

category_view_controller.rb

Итак, в моем существующем category_view_controller у меня есть следующий метод, который выталкивает деталь просмотра контроллера, когда строка выбирается из списка категорий в контроллере категории вида. Поскольку теперь я создаю свои категории с их атрибутами (меткой и описанием) статически в app_deligate.rb. Это отлично работает в симе.

def tableView(tableView, didSelectRowAtIndexPath:indexPath) 

    case indexPath.section 
     when 0 
     cat, label, desc = Categories.categories_list[indexPath.row] 
     detailsVC = DetailViewController.alloc.initWithStyle(UITableViewStyleGrouped,  category:cat, label:label, description:desc) 
     navigationController.pushViewController(detailsVC, animated:true) 
    end 

    tableView.deselectRowAtIndexPath(indexPath, animated:true) 
    end 

DetailViewController.rb.

Этот контроллер наследуется от UITableViewController. Код ниже уже изменен, чтобы избавиться от tableView ... поэтому нет таблицы (вы можете увидеть, где я начал переходить на UILabel). Это также очень простое изображение с простой белой меткой, которая включает в себя подробный текст, который я установил в файле add_deligate.

class DetailViewController < UITableViewController 

def initWithStyle(style, category:cat, label:label, description:desc) 
    initWithStyle(style) 
    @category = cat 
    @description = desc 
    @label_text = label 
    self 
end 


def viewDidLoad 
    super 
    self.view.backgroundColor = UIColor.redColor 

    @label = UILabel.alloc.initWithFrame([[20, 50], [280, 80]]).tap do |label| 
    label.translatesAutoresizingMaskIntoConstraints = false 
    label.text = @description 
    label.lineBreakMode = UILineBreakModeTailTruncation 
    label.numberOfLines = 0 
    label.sizeToFit 
    label.textColor = UIColor.colorWithHue(0.0, saturation:0.0, brightness:0.40, alpha:1.0) 
    self.view.addSubview(label) 
    end 
end 
end 

Моей путаница

Я не знаю, как идти об удалении Tableview и только с помощью простого статического текста через UILabel. Или, может быть, есть еще лучший способ.

Я знаю, что мне нужно изменить эту строку в category_views_controller, который вызывает detail_view_controller. Эта строка все еще ссылается на UITableViewStyleGrouped ... и не должна быть, так как нет стиля таблицы.

Я попробовал просто удалить 'initWithStyle ... но это нарушает приложение.

detailsVC = DetailViewController.alloc.init(category:cat, label:label, description:desc) 

мне нужна details_view_controller НЕ унаследует от < UITableViewController. Это выглядит так же просто, как просто удаление или изменение наследования. Я пробовал ... но это нарушает приложение. Я подозреваю, что любой из них может работать, как только я правильно удалю «UITableViewStyleGrouped» из вызова информации в category_view_controller.

class DetailViewController 

и

class DetailViewController < UIViewController 

Кроме того, когда я установить фоновый цвет в методе viewDidLoad внутри details_view_controller он не имеет никакого эффекта. Не знаю, почему.

self.view.backgroundColor = UIColor.redColor 

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

Я надеюсь, что кто-то может указать мне в направлении обучения и заставить этот код работать по назначению. Спасибо

ответ

2

Похоже, у вас много фонового чтения. Не проблема - мы все были там в какой-то момент. Но проблемы, с которыми вы сталкиваетесь, как правило, не знакомы с Cocoa Touch.

Я бы рекомендовал прочитать официальные руководства Apple, в том числе View Controller.

https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html

Если бы просто начать кодирование, Promotion собирается быть вашим лучшим другом.

https://github.com/clearsightstudio/ProMotion

Promotion абстрагирует много грязной Objective-C и позволяет просто открывать и закрывать экраны с простыми командами.

class AppDelegate < ProMotion::AppDelegateParent 
    def on_load 
    open ListScreen.new(nav_bar: true) 
    end 
end 

class ListScreen < ProMotion::TableScreen 
    def table_data 
    [{ 
     title: "", 
     cells: [{ 
     title: "Cell 1", 
     action: :selected_cell, 
     arguments: { cell_number: 1 } 
     }, { 
     title: "Cell 2", 
     action: :selected_cell, 
     arguments: { cell_number: 2 } 
     }] 
    }] 
    end 

    def selected_cell(args={}) 
    if args[:cell_number] == 1 
     open DetailScreen 
    elsif args[:cell_number] == 2 
     open OtherScreen 
    end 
    end 
end 

class DetailScreen < ProMotion::Screen 
    title "Detail" 

    def will_appear 
    # Set up your UILabel and whatnot here 
    end 
end 
+0

Thanks Jamon. Вы ответили мне на две отдельные должности. Я определенно изучу прикосновение к какао. Что вы предлагаете мне читать? Я принимаю документы ... но ваш текст в ответе оставляет то, что вы рекомендуете. – hellion

+0

Я вижу ваше редактирование для чтения. Спасибо тонну за ваш вклад! – hellion

+0

Вы ставите. Если у вас iPhone или iPad, я бы рекомендовал руководство iOS и Cocoa для программирования на iBook. Они свободны, длительны, но стоит посмотреть. Кроме того, есть лекции Пола Хегарти по iTunes U, которые могут быть полезными. И просмотрите учебные пособия и скринкасты ProMotion - там вы найдете множество вещей. Получайте удовольствие от RubyMotion - это потрясающе! –

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